逗号分隔值在mysql中搜索

时间:2014-01-16 14:34:24

标签: mysql sql

我想使用meta_value ='1,2'

搜索此表

我将如何撰写查询?

我可以使用LIKE吗?我尝试使用IN子句。

╔════╦══════════════╦══════╗
║ id ║  meta_val    ║ 210  ║
╠════╬══════════════╬══════╣
║  1 ║ 1,2,3,4,5,6  ║ 5636 ║
║  2 ║ 1,2,3        ║  148 ║
║  3 ║ 1,2,3,4      ║  101 ║
║  4 ║ 1            ║  959 ║
╚════╩══════════════╩══════╝

2 个答案:

答案 0 :(得分:4)

使用find_in_set

SELECT * FROM table WHERE FIND_IN_SET('1',meta_val) AND FIND_IN_SET('2', meta_val);

你应该考虑规范化。

答案 1 :(得分:1)

之前我使用过这种方法,但是使用ID创建另一个表链接到这个方法更有效率和可管理性。无论是否输入数据,都可以对其进行处理以使用单独的表存储。

否则你可以使用像aconrad提到的find_in_set,或者更好的是从数据库中取出数据并在必要时从外部处理它。