leetcode 196. Delete Duplicate Emails(SQL,刪除重複元組)39
貼原題:
解析:
本題是讓從Person表中刪除Email重複的元組。
那麼可以用自身連線寫法和子查詢寫法兩種。
自身連線即需要找出Email相等,Id最小的元組。
子查詢寫法需要建立不包含重複Email的Id為表P,選擇Id不在以不表P內的元組。
貼程式碼:
自身連結解法:
# Write your MySQL query statement below
DELETE x
FROM Person x, Person y
WHERE x.Email = y.Email AND x.Id > y.Id; #此處用大於,用等於會把兩個都刪除,用小於則刪除的位置不對
子查詢寫法:
# Write your MySQL query statement below
DELETE
FROM Person
WHERE Id NOT IN (SELECT Id #建立不包含重複Email的Id為表P,選擇Id不在以不表P內的元組
FROM (SELECT MIN(Id) AS Id
FROM Person
GROUP BY Email)P);