Почему это условие mysql IN (1,2,3,4…) не работает, если в скобках указано много значений?

Я сохраняю в столбце список состояний, разделенных запятыми:

Вот так: 1,2,3, 4,5,6,7,8 .. и так далее, только их идентификаторы.

Затем я выполняю запрос, чтобы получить все строки, которые имеют состояние с идентификатором 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 идентификаторов, разделенных запятыми, он будет работать, но если он имеет 50 или более, он больше не будет работать. В приведенном выше результате не будет отображаться строка с множеством состояний, в том числе с идентификатором 8.

Есть идеи? Я использую этот подход, чтобы не создавать еще одну таблицу для сохранения связи между партнером и состояниями, или мне лучше сделать это?

1
задан NullUserException 24 September 2011 в 21:38
поделиться