48.刪除重複的電子郵箱
阿新 • • 發佈:2022-03-14
表: Person
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| email | varchar |
+-------------+---------+
id是該表的主鍵列。
該表的每一行包含一封電子郵件。電子郵件將不包含大寫字母。
編寫一個SQL查詢來 刪除 所有重複的電子郵件,只保留一個id最小的唯一電子郵件。
以 任意順序 返回結果表。
/*根據題意可知該題希望保留的是同一郵箱下Id較小的那條資料,反之就是需刪除同一郵箱下Id較大的資料條目,這裡使用開窗函式來解決: 針對同一郵箱,對其Id序號進行排序rn; 依據題意,只保留排序rn=1的資料,其餘資料均需刪除 */ delete from Person where Id in ( select Id from ( select Id, row_number() over(partition by Email order by Id) rn from Person ) t1 where rn>1 )