mysql 在列中以逗号分隔值选择行

标签 mysql sql select

我有一个包含三列的产品表:

  1. 产品 ID
  2. 产品名称
  3. 产品关键字

它包含类似的值:

product_id | product_name | product_keywords
1                |Computer         |pc, computer, laptop, personal computer, desktop computer
------------------------------------------------------------------------------------------------------------------'
2               |Mobile                |Smart Phone, Phone, Nokia, Sony
--------------------------------------------------------------------------------------------------------------------'

现在我需要一个 SQL 查询,如果任何客户搜索 pc 或个人计算机,它将返回 Product_name = Computer with Product_id = 1 等等。

最佳答案

虽然我的第一 react 是重新设计架构以拥有一个具有唯一值的keywords表以及产品和关键字之间的映射表,但MySQL实际上提供了一种优雅的方式来查询逗号用 find_in_set 分隔的字符串功能:

SELECT product_id, product_name
FROM   products
WHERE  FIND_IN_SET ('pc', keywords) > 0 OR
       FIND_IN_SET ('personal computer', keywords) > 0

关于mysql 在列中以逗号分隔值选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30182706/

相关文章:

mysql - 如何限制 SQL 查询的结果?

mysql - 有没有办法在 SQL 中使用 WHILE 和 IF/ELSE 语句?

sql - 如何编写提供所有三个条件的选择查询?

sql - 在多个表中存储数据值与通过查询访问相同的值

php - 定制的 SQL 查询——访问基于 2 个(或更多)postmeta 字段的记录

mysql - 不能让你的两个或多个方法在同一条路线上

php - 列出 mysql 中同一个表的结果

mysql - 如何在mysql中重用子查询结果

javascript - Select2 插件(多选输入)不起作用

MySQL INNER JOIN 从第二个表中只选择一行