mysql 使用一个字段多个and查询

发表于 2021-03-08  1.78k 次阅读


场景

查询指定多个商品分类的交集的商品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也查出来了,只要有50015002就筛选出来

最终

SELECT goods_id FROM category_map WHERE category_id in (5001, 5002) GROUP BY goods_id HAVING COUNT(*) = 2;

使用group bycount 查询商品符合条件次数 在用having 等于需要符合数量就行了

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

一盏灯 一座城 找一人 一路的颠沛流离