2012-04-04 75 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