我有一个名为“users”的SQL表
在此表中,名为“Cities”的列中包含数组(1,2,3,...)
第1行:“1,2,15,69,98”
第2行:“7,9,15,5,69”
第3行:“7,3,1,5,6”
如何选择同时具有多个值的行
表示exp:我想选择其中包含1的行
结果应该显示row1和row3。
答案 0 :(得分:2)
您可以参考here
SELECT *
FROM users
WHERE INSTR(cities, '1',1)>0;
答案 1 :(得分:1)
使用FIND_IN_SET:
SELECT *
FROM users
WHERE FIND_IN_SET('1', Cities) > 0
正如其他人所提到的,将CSV数据存储在users
表中是次优的,因为它破坏了数据库所具有的大部分关系能力。但如果您必须按原样继续,FIND_IN_SET
可能会让您这样做。
答案 2 :(得分:1)
即使有可能,我强烈建议在列中存储单个值。
SELECT *
FROM users
where Concat(',',col,',') like '%,1,%'
在另一种方法之间我使用LIKE
发布了这个答案。但蒂姆的FIND_IN_SET
是一个更好的方法
答案 3 :(得分:1)
我认为它应该适合您的要求:
SELECT *
FROM users
WHERE Cities LIKE '%1,%'