【发布时间】:2010-10-06 20:07:45
【问题描述】:
我在列中存储了一个以逗号分隔的状态列表:
像这样: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 的行。
有什么想法吗?我使用这种方法不必创建另一个表来保存合作伙伴和州之间的关系,还是应该做得更好?
【问题讨论】:
标签: mysql sql database denormalized