我想使用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 ║
╚════╩══════════════╩══════╝
答案 0 :(得分:4)
SELECT * FROM table WHERE FIND_IN_SET('1',meta_val) AND FIND_IN_SET('2', meta_val);
你应该考虑规范化。
答案 1 :(得分:1)
之前我使用过这种方法,但是使用ID创建另一个表链接到这个方法更有效率和可管理性。无论是否输入数据,都可以对其进行处理以使用单独的表存储。
否则你可以使用像aconrad提到的find_in_set,或者更好的是从数据库中取出数据并在必要时从外部处理它。