Select

使用 SQL 查找衝突組合

  • December 7, 2019

假設我有一個名為“Everyone_Loves_Relationships”的表,其中包含三個欄位:Boy_NameGirl_NameRelationship_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

引用自:https://dba.stackexchange.com/questions/255068