场景
查询指定多个商品分类的交集的商品id
比如查询同时分类是5001
5002
的商品,查询到的结果应该是1001
数据
id | goods_id | category_id |
---|---|---|
1 | 1001 | 5001 |
2 | 1001 | 5002 |
3 | 1001 | 5003 |
4 | 1001 | 5004 |
5 | 1002 | 5001 |
6 | 1002 | 6001 |
过程
这不很简单!!!
SELECT goods_id FROM category_map WHERE category_id = 5001 AND category_id = 5002;
运行!!!结果空~ 对偶,category_id = 5001 肯定 != 5002~
SELECT goods_id FROM category_map WHERE category_id in (5001, 5002);
这样也不行这就把1002
也查出来了,只要有5001
或5002
就筛选出来
最终
SELECT goods_id FROM category_map WHERE category_id in (5001, 5002) GROUP BY goods_id HAVING COUNT(*) = 2;
使用group by
加 count
查询商品符合条件次数 在用having
等于需要符合数量就行了
COMMENTS | NOTHING