算法的重要性,我就不多說了吧,想去大廠,就必須要經過基礎知識和業務邏輯面試+算法面試。是以,為了提高大家的算法能力,這個公衆号後續每天帶大家做一道算法題,題目就從LeetCode上面選 !
今天和大家聊的問題叫做 删除重複的電子郵箱,我們先來看題面:
https://leetcode-cn.com/problems/delete-duplicate-emails/
Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique emails based on its smallest Id.
題意
編寫一個 SQL 查詢,來删除 Person 表中所有重複的電子郵箱,重複的郵箱裡隻保留 Id 最小 的那個。
解題
- 查詢目标:删除一條記錄
- 查詢範圍:Person表
-
查詢條件:删除所有重複的電子郵箱 ,重複的郵箱裡隻保留Id最小的哪個。
顯然,通過這個查詢條件可以提取出來兩條
and
關系的條件:
(1)找出所有重複的電子郵箱(2)删除Id大的重複郵箱;
對于條件(1),需要判斷出所有重複的電子郵箱,即
p1.Email = p2.Email
;
對于條件(2),需要判斷重複郵箱中Id較大的:
p1.Id > p2.Id
delete
p1
from
Person p1,
Person p2
where
(p1.email = p2.email) and (p1.id > p2.id)
複制
好了,今天的文章就到這裡,如果覺得有所收獲,請順手點個在看或者轉發吧,你們的支援是我最大的動力 。