Select
使用 SQL 查找衝突組合
假設我有一個名為“Everyone_Loves_Relationships”的表,其中包含三個欄位:
Boy_Name
、Girl_Name
、Relationship_Status
。清單是這樣的:Boy_Name Girl_Name Relationship_Status Tony Carol No Simon Julia Yes Frank Carol No Frank Lucy No Frank Lucy No Tony Lucy No Tony Samantha Yes Frank Carol Yes
每個組合可以顯示多次。
你會注意到弗蘭克和卡羅爾出現了兩次,一次是“是”,一次是“否”。
如何設計一個 SQL 請求來檢查 Boy_Name&Girl_Name 的組合是否同時具有 Yes 和 No?
謝謝!
SELECT Boy_Name, Girl_Name FROM Everyone_Loves_Relationships GROUP BY Boy_Name, Girl_Name HAVING COUNT(DISTINCT Relationship_Status) = 2
此查詢假定
Relationship_Status
欄位中不存在其他值(包括 NULL)。如果這不是真的,則將條件替換為HAVING SUM(DISTINCT CASE WHEN Relationship_Status = 'Yes' THEN 1 WHEN Relationship_Status = 'No' THEN 2 ELSE 3 END) < 3