我在列中存储用逗号分隔的状态列表:如果括号中有很多值,为什么mysql IN(1,2,3,4 ...)条件不工作?
像这样:1,2,3,4,5,6,7,8 ..等等,只是他们的ID。
然后,我正在做一个查询来获得所有具有ID 8的状态的行,并且它在状态列表中有少量项目时起作用。
这是查询和表:
mysql> select id_partner, name, states from partner where 8 IN (states);
+------------+----------------+--------------------+
| id_partner | name | states |
+------------+----------------+--------------------+
| 1 | Inmo Inmo | 8,9,10 |
| 2 | Foto Piso | 8,9,10,11,12,13,14 |
| 4 | PARTNER 001-A | 8 |
| 6 | EnAlquiler | 8 |
| 7 | Habitaclia.com | 8,43,50 |
+------------+----------------+--------------------+
5 rows in set (0.00 sec)
如果列状态包含逗号,将工作分隔10点的ID,但是如果它有50个或更多,将不再工作。在上面的结果中,它不会显示具有许多状态的行,包括具有ID 8的那一行。
任何想法?我正在使用这种方法,不必创建另一个表来保存合作伙伴和州之间的关系,还是应该更好地做到这一点?
感谢它的工作! :D我不知道这一点,所以IN条件只适用于你的子查询。 – 2010-10-06 20:14:11
以及如何为WHERE字段NOT IN(1,2,3 ..)?不FIND_IN_SET? – 2010-10-06 20:20:11
@Alexandru Trandafir Catalin:要查找该值是否不在CSV中,请使用:WHERE FIND_IN_SET(8,states)= 0来查找其中8不在CSV中的行。 – 2010-10-06 20:23:40