SQL實現(xiàn)LeetCode(196.刪除重復郵箱)
[LeetCode] 196.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.
+----+------------------+
| Id | Email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
| 3 | john@example.com |
+----+------------------+
Id is the primary key column for this table.
For example, after running your query, the above Person table should have the following rows:
+----+------------------+
| Id | Email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
+----+------------------+
這道題讓我們刪除重復郵箱,那我們可以首先找出所有不重復的郵箱,然后取個反就是重復的郵箱,都刪掉即可,那么我們?nèi)绾握页鏊胁恢貜偷泥]箱呢,我們可以按照郵箱群組起來,然后用Min關(guān)鍵字挑出較小的,然后取補集刪除即可:
解法一:
DELETE FROM Person WHERE Id NOT IN (SELECT Id FROM (SELECT MIN(Id) Id FROM Person GROUP BY Email) p);
我們也可以使用內(nèi)交讓兩個表以郵箱關(guān)聯(lián)起來,然后把相同郵箱且Id大的刪除掉,參見代碼如下:
解法二:
DELETE p2 FROM Person p1 JOIN Person p2 ON p2.Email = p1.Email WHERE p2.Id > p1.Id;
我們也可以不用Join,而直接用where將兩表關(guān)聯(lián)起來也行:
解法三:
DELETE p2 FROM Person p1, Person p2 WHERE p1.Email = p2.Email AND p2.Id > p1.Id;
類似題目:
參考資料:
https://leetcode.com/discuss/61176/simple-solution-using-a-self-join
https://leetcode.com/discuss/48403/my-answer-delete-duplicate-emails-with-double-nested-query
到此這篇關(guān)于SQL實現(xiàn)LeetCode(196.刪除重復郵箱)的文章就介紹到這了,更多相關(guān)SQL實現(xiàn)刪除重復郵箱內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux系統(tǒng)下實現(xiàn)mysql熱備份詳細步驟(mysql主從復制)
這篇文章主要介紹了linux系統(tǒng)下實現(xiàn)MySQL主從熱備份2013-12-12
mysql 8.0.15 安裝圖文教程及數(shù)據(jù)庫基礎(chǔ)
這篇文章主要為大家詳細介紹了mysql 8.0.15 安裝方法圖文教程,及數(shù)據(jù)庫基礎(chǔ)知識,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-03-03
完美解決MySQL通過localhost無法連接數(shù)據(jù)庫的問題
下面小編就為大家?guī)硪黄昝澜鉀QMySQL通過localhost無法連接數(shù)據(jù)庫的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
MySQL中SHOW DATABASES語句查看或顯示數(shù)據(jù)庫
在MySQL中,可使用SHOW DATABASES語句來查看或顯示當前用戶權(quán)限范圍以內(nèi)的數(shù)據(jù)庫,下面就來介紹一下如何使用,具有一定的參考價值,感興趣的可以了解一下2024-02-02
編寫腳本令Xtrabackup對MySQL數(shù)據(jù)進行備份的教程
這篇文章主要介紹了編寫腳本令Xtrabackup對MySQL數(shù)據(jù)進行備份的教程,示例環(huán)境基于CentOS系統(tǒng),需要的朋友可以參考下2015-12-12
數(shù)據(jù)庫設計工具MySQL?Workbench使用教程(超級詳細!)
MySQL?Workbench為數(shù)據(jù)庫管理員、程序開發(fā)者和系統(tǒng)規(guī)劃師提供可視化的Sql開發(fā)、數(shù)據(jù)庫建模、以及數(shù)據(jù)庫管理功能,下面這篇文章主要給大家介紹了關(guān)于MySQL設計工具Workbench使用的相關(guān)資料,需要的朋友可以參考下2023-02-02

