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コード

推薦する

Node.jsとDenoの比較

目次序文Denoとは何ですか? Node.jsとの比較建築ESモジュール依存関係の管理TypeScr...

Vueにログイン認証傍受機能を設置するアイデアを詳しく解説

目次1. 解決策2. サーバーから返されたトークンをブラウザに保存する3. リクエストにアクセス権限...

Vue グローバル フィルターの概念、注意事項、基本的な使用方法

目次1. フィルターの概念1. グローバルフィルターのフォーマットをカスタマイズする2. フィルター...

TypeScript 学習ノート: 型の絞り込み

目次序文型推論真理値の絞り込み平等の縮小演算子の絞り込みインスタンスの絞り込み狭まりの本質ユニオン型...

IDEA で Linux コマンドを使用する方法

Windows システムと比較して、Linux システムは多数の豊富なコマンドライン ツールを提供し...

Linuxでファイルを削除してもスペースが解放されない問題の対処方法

問題の背景業務システムのサーバ監視システムからディスク使用率が90%に達したという早期警告通知が来た...

Ubuntu 18.04 で SSH サービスをインストールして設定する方法

sshツールをインストールする1. ターミナルを開き、次のコマンドを入力します。 apt-getアッ...

Linux プロセスが占有するポート番号を表示する 6 つの方法

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...

ウェブ計算機を実装するためのjs

HTML、CSS、JS を使用してシンプルな Web 計算機を作成する方法は?コンピュータには次の...

MySQL の組み込み関数 find_in_set を使用した効率的なあいまい検索の詳細な説明

一般的に使用される方法は次の 4 つです。 1.locate()メソッドを使用する一般的な使用法: ...

HTML マークアップ言語 - フォーム

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

VUE 3 テレポート コンポーネントと使用構文をすぐに使い始める

目次1. テレポートの紹介1.1. 複数のテレポートを使用する2. テレポートを使用する理由3. テ...

CentOS8 でローカル yum ソースを構成するための詳細なチュートリアル

centos8 ディストリビューションは、BaseOS および AppStream リポジトリを通じ...

Vueのキーボードイベントの詳細な説明

目次共通キーエイリアスエイリアスが指定されていないキーシステム修飾キーカスタムキーエイリアス要約する...

HTML で 2 つの div タグの間に垂直線を描く方法

最近、インターフェースを描画しているときに、インターフェースに垂直線を描画し、この垂直線の高さが親 ...