我在列中存储了以逗号分隔的类别ID列表:
像这样:1,2,3,4,5,6,7,8 ..等等,只是他们的ID。
然后我正在进行查询以获取具有ID为2,3的类别的所有行,并且当包列表中的项目很少时它会起作用。
这是查询和表格:
mysql> select * from packages where category_id IN (2,3);
获取包含ctegory id为2或3的完整软件包列表的任何解决方案。
答案 0 :(得分:0)
这应该回答你的问题:
select * from packages where category_id LIKE "2" or category_id LIKE "3";
但是,您最好对数据进行非规范化。
答案 1 :(得分:0)
反规范化的坏主意
您应该规范化数据
此
的一种可能解决方案mysql> create table the_in ( expr varchar(255)); Query OK, 0 rows affected (0.00 sec) mysql> insert into the_in values('1,2'); Query OK, 1 row affected (0.00 sec) mysql> create table some_table ( id int(10)); Query OK, 0 rows affected (0.00 sec) mysql> insert into some_table values (1), (2), (3), (4); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from some_table where find_in_set(id, (select expr from the_in)); +------+ | id | +------+ | 1 | | 2 | +------+ 2 rows in set (0.00 sec)
find_in_set
- 要注意效果