使用 HAVING 檢查組中的多個條件

訂單表

顧客 ID 產品編號 數量 價錢
1 2 100
1 3 2 200
1 4 1 500
2 1 4 50
3 6 700

要檢查訂購了產品 ID 2 和產品 ID 3 的客戶,可以使用 HAVING

 select customerId
 from orders
 where productID in (2,3)
 group by customerId
 having count(distinct productID) = 2

返回值:

顧客 ID
1

查詢僅選擇帶有產品 ID 的記錄,並使用 HAVING 子句檢查具有 2 個 productId 的組,而不只是一個。

另一種可能性是

 select customerId
 from orders
 group by customerId
 having sum(case when productID = 2 then 1 else 0 end) > 0
    and sum(case when productID = 3 then 1 else 0 end) > 0

此查詢僅選擇具有至少一個具有 productID 2 的記錄且至少一個具有 productID 3 的組。