【LeetCode】196. 刪除重復(fù)的電子郵箱

LeetCode數(shù)據(jù)庫(kù)題目

題目

編寫(xiě)一個(gè) SQL 查詢,來(lái)刪除 Person表中所有重復(fù)的電子郵箱,重復(fù)的郵箱里只保留 Id 最小 的那個(gè)。

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+
Id 是這個(gè)表的主鍵。

例如,在運(yùn)行你的查詢語(yǔ)句之后,上面的Person表應(yīng)返回以下幾行:

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
+----+------------------+

思路

  1. 查詢目標(biāo):刪除一條記錄
  2. 查詢范圍:Person表
  3. 查詢條件:刪除所有重復(fù)的電子郵箱 ,重復(fù)的郵箱里只保留Id最小的哪個(gè)。
    顯然,通過(guò)這個(gè)查詢條件可以提取出來(lái)兩條and關(guān)系的條件:
    (1)找出所有重復(fù)的電子郵箱(2)刪除Id大的重復(fù)郵箱;
    對(duì)于條件(1),需要判斷出所有重復(fù)的電子郵箱,即p1.Email = p2.Email
    對(duì)于條件(2),需要判斷重復(fù)郵箱中Id較大的:p1.Id > p2.Id

解答

delete 
    p1 
from 
    Person p1,
    Person p2 
where 
    (p1.email = p2.email) and (p1.id > p2.id)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容