leetcode之刪除重複電子郵箱

刪除重複的電子郵箱

題目描述

編寫一個 SQL 查詢,來刪除 Person 表中所有重複的電子郵箱,重複的郵箱裏只保留 Id 最小 的那個
在這裏插入圖片描述

Result

在這裏插入圖片描述

先上答案

delete from person where Id not in (select t.Id from (select min(Id) as Id, Email from person group by Email)as t);
解析:

第一步:
審題:題目要求刪除, 很多都會以爲可以直接使用select來進行解答,導致測試驗證得不出正確的答案
第二步:
思路:去除重複重複郵箱,並留下最小的Id,首先可以排除使用distinct關鍵字,因爲並不知道去除重複的裏面會不會留下最小Id,這時候我們可以想到使用group by先進行分組,同時我們可以使用min()函數獲取到每一分組中的最小Id(這時候查詢出來的Id是所有郵箱對應的最小Id),然後通過使用Id not in進行排序作爲where條件即可得出結果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章