如何检查 sql 中的 Where In 子句中是否存在所有数组元素
How to check all array elements exists in Where In Clause in sql
我在创建一个 sql 查询时遇到了一个问题。实际上我想检查 wherein 子句是否存在所有元素,如果所有元素都存在于 WhereIn 子句中那么我想 return 用 groupby 记录。这是我的 table produt_categories :-
id product_id category_id
1 1 1
2 1 2
当我应用时播种其中如下所示:-
SELECT * FROM `product_categories`
WHERE category_id in (1,2,3) group by(product_id);
现在 return 我这个结果:-
id product_id category_id
1 1 1
实际上它 return 对我来说很好,因为 whereIn 子句的实际行为。
所以我想如果所有 category_id 1,2,3 都存在,那么它必须显示记录。如果我通过 1,2 那么我也会来。希望你们 understand.Please 帮助我创建 qyuery
您可以使用 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
是一个反模式。
相关文章:
我在创建一个 sql 查询时遇到了一个问题。实际上我想检查 wherein 子句是否存在所有元素,如果所有元素都存在于 WhereIn 子句中那么我想 return 用 groupby 记录。这是我的 table produt_categories :-
id product_id category_id
1 1 1
2 1 2
当我应用时播种其中如下所示:-
SELECT * FROM `product_categories`
WHERE category_id in (1,2,3) group by(product_id);
现在 return 我这个结果:-
id product_id category_id
1 1 1
实际上它 return 对我来说很好,因为 whereIn 子句的实际行为。 所以我想如果所有 category_id 1,2,3 都存在,那么它必须显示记录。如果我通过 1,2 那么我也会来。希望你们 understand.Please 帮助我创建 qyuery
您可以使用 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
是一个反模式。
相关文章: