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


product_id
产品名称
product_keywords


它包含类似这样的值:


  
  product_id |产品名称| product_keywords
  1台计算机,计算机,个人计算机,笔记本电脑,个人计算机,台式计算机
  -------------------------------------------------- -------------------------------------------------- --------------'
  2个||移动|智能电话,电话,诺基亚,索尼
  -------------------------------------------------- -------------------------------------------------- ----------------'


现在,我需要一个SQL查询,如果有任何客户搜索PC或个人计算机,它将返回product_name = product_id = 1的计算机,依此类推。

最佳答案

尽管我的本能是重新设计架构以使其具有一个具有唯一值的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 - MySQL选择列上逗号分隔值的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30182706/

10-11 03:14