ブラシタイトルデータベースバックルLeetCode力(196):重複した電子メールを削除します

記事のディレクトリ

タイトル

Personテーブルに重複するすべての電子メールを削除するには、SQLクエリを書く、重複したメールボックスが唯一の最小同上を保持します。

ここに画像を挿入説明

クエリを実行した後、例えば、上記のPersonテーブルには、次の行を返す必要があります:

ここに画像を挿入説明

ヒント:

SQL、Personテーブルの全体の出力を実行した後。
delete文を使用してください。

分析

方法:DELETE WHERE句と
アルゴリズム

私たちは、独自の電子メール欄にこのフォームに接続するには、次のコードを使用することができます。

MySQLの

SELECT p1.*
FROM Person p1,
    Person p2
WHERE
    p1.Email = p2.Email
;

その後、我々は、同じメールアドレスでより大きなID他のレコードを見つける必要があります。だから我々はこのような新しい条件にWHERE句を追加することができます。

MySQLの

SELECT p1.*
FROM Person p1,
    Person p2
WHERE
    p1.Email = p2.Email AND p1.Id > p2.Id
;

我々は、削除するレコードを持っているので、我々は最終的にDELETEステートメントを変更することができますので。

MySQLの

DELETE p1 FROM Person p1,
    Person p2
WHERE
    p1.Email = p2.Email AND p1.Id > p2.Id

ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明

答え

delete p1.* from 
Person as p1,
Person as p2
where
p1.email = p2.email
and
p1.id > p2.id;

select * from 	Person;
公開された698元の記事 ウォンの賞賛929 ビュー120 000 +

おすすめ

転載: blog.csdn.net/qq_35456045/article/details/104798953