2012-04-04 77 views
0

我想從表2中,一個逗號分隔的列,其中列可能是這樣選擇的所有匹配:0,1,2或2,4,5或2,5或1,3 ,5等Mysql的逗號分隔欄匹配

我曾嘗試用:

SELECT * from table where 1,3,5 IN(SELECT commaseparated FROM table2) WHERE .. 

但在語句錯誤當使用逗號。

我也使用REGEXP嘗試但對我來說,我需要內搜索所有比賽1,3,5

我怎麼能解決這個問題嗎? :)

+0

你不能這樣做,你必須爆炸數據庫的內容,並將其轉換爲字符串或數組,並用它來搜索。 – magicianiam 2012-04-04 21:34:16

+1

你需要做的'其中1 IN(...)和2(...)和3(...)' – binarious 2012-04-04 21:34:23

+0

張貼整個查詢,你會得到錯誤會更容易解決你的問題 – 2012-04-04 21:34:41

回答

3

不能這樣做,在標準的SQL。這是

WHERE singlevalue IN (list, of, values) 

如果你想對列表進行比較列表,你應該改造你的表中,所以他們是正確的正常化。將格式化的數據存儲在字段中基本上否定了建立關係數據庫的目的 - 如果數據的格式不允許關係形成,則無法與數據建立關係。

如果這些CSV名單已在子表,你可以做一個非常簡單的連接查詢,以滿足您的要求。

+0

+1爲正常化的部分。 – Basti 2012-04-04 21:38:23

+0

我會正常化! :)感謝您的好answear! – teecee 2012-04-04 23:30:18