2012-11-28 24 views
0

可能重複的選擇:
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) 

僅返回「吉姆」和「傑克」,而不是「約翰」。我究竟做錯了什麼?

編輯:可悲的是我不能改變表的結構。我需要使用該逗號列表樣式

+1

您需要停止在單個列中存儲多個值。 –

+0

對不起,編輯了SQL語句。我錯誤地複製了它。 –

回答

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

我的建議是改變你的表,不要在這個逗號分開存儲你的數據d格式,它只會導致問題。

+0

這將匹配在4,44等。 –

+0

@OMGPonies是與'LIKE'是一個問題。使用'FIND_IN_SET'添加了一個查詢來解決這個問題 – Taryn

+0

FIND IN SET是解決方案:)謝謝! –