LeetCode の SQL 実装 (196. 重複するメールボックスを削除する)

LeetCode の SQL 実装 (196. 重複するメールボックスを削除する)

[LeetCode] 196.重複したメールを削除する

SQL クエリを記述して、Person という名前のテーブル内の重複する電子メール エントリをすべて削除し、最小の ID に基づいて一意の電子メールのみを保持します。

+----+------------------+
| ID | メール |
+----+------------------+
| 1 | [email protected] |
| 2 | [email protected] |
| 3 | [email protected] |
+----+------------------+
Id はこのテーブルの主キー列です。

たとえば、クエリを実行すると、上記の Person テーブルには次の行が含まれるようになります。

+----+------------------+
| ID | メール |
+----+------------------+
| 1 | [email protected] |
| 2 | [email protected] |
+----+------------------+

この質問では、重複したメールボックスを削除するように求められています。まず、重複していないメールボックスをすべて見つけ、次にその数の逆数を取って重複したメールボックスを取得し、すべて削除します。では、重複していないメールボックスをすべて見つけるにはどうすればよいでしょうか。メールボックスごとにグループ化し、次に Min キーワードを使用して小さいメールボックスを選択し、補集合を使用して削除します。

解決策1:

IDが存在しないPersonから削除
(SELECT Id FROM (SELECT MIN(Id) Id FROM Person GROUP BY Email) p);

内部交差を使用して 2 つのテーブルを電子メール アドレスに関連付け、より大きな ID を持つ同じ電子メール アドレスを削除することもできます。以下のコードを参照してください。

解決策2:

人 p1 から p2 を削除し、人 p2 を結合します。 
p2.Email = p1.Email の場合、p2.Id > p1.Id となります。

Join の代わりに where を使用して 2 つのテーブルを直接関連付けることもできます。

解決策3:

人 p1、人 p2 から p2 を削除
p1.Email = p2.Email かつ 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

これで、LeetCode の SQL 実装 (196. 重複するメールボックスの削除) に関するこの記事は終了です。重複するメールボックスを削除する SQL 実装の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • SQL 重複メールアドレス削除 Likou 質問解決プロセス

<<:  iframe なしの div ネスト HTML

>>:  Momentsで写真を整理するためのCSSコード

推薦する

コマンドを使用してMySQLデータベース(de1)を作成する方法

1. MYSQLに接続するフォーマット: mysql -h ホストアドレス -u ユーザー名 -p ...

Presto をインストールし、Docker で Hive を接続する詳細なプロセス

1. はじめにPresto は、ギガバイトからペタバイトに及ぶデータ ソースに対してインタラクティブ...

Nginx で IP と IP 範囲をブロックする方法

前面に書かれたNginx は単なるリバース プロキシおよび負荷分散サーバーではなく、電流制限、キャッ...

Centos8 で Apache httpd2.4.37 を使用して Web サーバーをインストールする詳細な手順

ステップ 1: yum install httpd -y #httpd サービスをインストールします...

nginx「504 ゲートウェイタイムアウト」エラーを解決する

ウェブサイトを作成する学生は、アクセス時に一部の nginx サーバーが 504 Gateway T...

Ubuntu 20.04 IPアドレスを変更する方法の例

例:本日、前回のオフィスコラボレーションプラットフォーム実験の続きをしていたところ、仮想マシンは以前...

Docker ベースの Tomcat クラスタと Nginx ロード バランシングの展開の概要

目次前面に書かれた1. Ngixnイメージの作成2. Java Web (Tomcat) アプリケー...

CSSを使用してアダプティブスクエアを実装する方法の例

伝統的な方法は、正方形を固定形式で書くことです。長さ=幅を直接書き、次のように固定値を書きます。 。...

XHTML 3つの文書型宣言

XHTML は 3 つのドキュメント タイプ宣言を定義します。最もよく使用されるのは XHTML T...

nginx.conf ファイルの構文強調表示とフォーマット設定には nginx.vim ツールを使用します。

私はtengineを使用しています。インストールディレクトリは/usr/local/tengineで...

Vue-router ネストルーティングの詳細な説明

目次ステップ1. ルーティング ルールを設定し、子構成項目を使用します。 2. ジャンプ(フルパスを...

vue3 のコンポーネントの互換性のない変更の詳細な説明

目次機能コンポーネント非同期コンポーネントの書き方とdefineAsyncComponentメソッド...

ノードスクリプトで自動サインインと抽選機能を実現

目次1. はじめに2. 準備3. スクリプトプロジェクトの構築4. コードの作成と実行5. まとめと...

異なるページ間のJavaScriptデータ転送(URLパラメータ取得)

Web ページでは、あるページに情報を入力すると、別のページにジャンプし、入力した情報が別のページ...