从一系列类别中进行选择

时间:2012-11-28 15:02:49

标签: mysql sql

  

可能重复:
  Mysql WHERE problem with comma-separated list

我在表格中有下一个信息

name     categories
------   -----------
John      1,4
Jim       4,1
JAck      4,1

之间的其他。

我想选择与类别4相关的所有行,但是这句话......

SELECT name, categories
FROM `mytable`
WHERE 4 IN (categories)

只返回“Jim”和“Jack”,但不返回“John”。我做错了什么?

编辑:遗憾的是我无法更改表格的结构。我需要使用那个逗号列表样式

1 个答案:

答案 0 :(得分:0)

我不确定您为什么要在单个列中存储以逗号分隔的列表。但是你不能改变表结构,你会想要使用LIKE来比较数据:

select name, categories
from yourtable
where categories like '%4%'

请参阅SQL Fiddle with Demo

或者您可以使用FIND_IN_SET功能:

select name, categories
from yourtable
where FIND_IN_SET(4,categories) > 0

请参阅SQL Fiddle with Demo

我的建议是将您的表格更改为不以逗号分隔格式存储您的数据,它只会导致问题。