我在列中存儲用逗號分隔的狀態列表:如果括號中有很多值,爲什麼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