如何检查sql中where in子句中存在的所有数组元素

kupeojn6  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(357)

我在创建一个sql查询时面临一个问题。实际上我想检查where子句是否存在所有元素,如果where子句中存在所有元素,那么我想用groupby返回记录。。以下是我的单表产品类别:-

id product_id  category_id
 1    1              1
 2    1              2

当我喜欢的时候播种below:-

SELECT * FROM `product_categories` 
WHERE  category_id in (1,2,3) group by(product_id);

现在它把这个还给我result:-

id product_id  category_id
 1    1              1

其实它还我罚款,因为其中条款的实际行为。所以我想如果所有的分类标识1,2,3都存在,那么它必须显示记录。如果我通过1,2,那么我也会来。希望你们能理解。请帮我创建qyuery

zu0ti5jz

zu0ti5jz1#

你可以用 HAVING :

SELECT * 
FROM `product_categories` 
WHERE  category_id in (1,2,3) 
group by(product_id)
HAVING COUNT(DISTINCT category_id) = 3;  -- #elements from `IN` clause
``` `SELECT * FROM tab GROUP BY col` 是反模式。
相关文章:mysql和postgresql中的groupby子句,为什么postgresql会出错?

相关问题