0

可能重复:
逗号分隔列表的Mysql WHERE问题

我在表格中有下一个信息

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

其他之间。

我想选择属于类别 4 的所有行,但是这个语句..

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

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

编辑:可悲的是我不能改变表格的结构。我需要使用那种逗号列表样式

4

1 回答 1

0

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

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

请参阅带有演示的 SQL Fiddle

或者您可以使用以下FIND_IN_SET功能:

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

请参阅带有演示的 SQL Fiddle

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

于 2012-11-28T15:05:40.020 回答