在sql表中选择具有数组(value1,value2,...)的列

时间:2016-09-11 14:05:40

标签: mysql sql mysqli

我有一个名为“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。

4 个答案:

答案 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,%'