簡體   English   中英

如何檢查sql中Where In子句中存在的所有數組元素

[英]How to check all array elements exists in Where In Clause in sql

我在創建一個 sql 查詢時遇到了一個問題。 實際上我想檢查 where 子句是否存在所有元素,如果所有元素都存在於 WhereIn 子句中,那么我想用 groupby 返回該記錄..這是我的一個表 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);

現在它返回給我這個結果:-

id product_id  category_id
 1    1              1

實際上它讓我很好,因為 whereIn 子句的實際行為。 所以我想要如果所有 category_id 1,2,3 都存在,那么它必須顯示記錄。 如果我通過 1,2,那么我也會來。 希望你們理解。請幫我創建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是一種反模式。

相關文章: mySQL 和 postgreSQL 中的 Group by 子句,為什么 postgreSQL 會出錯?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM