SQL-Implementierung von LeetCode (196. Doppelte Postfächer löschen)

SQL-Implementierung von LeetCode (196. Doppelte Postfächer löschen)

[LeetCode] 196.Doppelte E-Mails löschen

Schreiben Sie eine SQL-Abfrage, um alle doppelten E-Mail-Einträge in einer Tabelle mit dem Namen „Person“ zu löschen und nur eindeutige E-Mails basierend auf ihrer kleinsten ID beizubehalten.

+----+------------------+
| ID | E-Mail |
+----+------------------+
| 1 | [email protected] |
| 2 | [email protected] |
| 3 | [email protected] |
+----+------------------+
Die ID ist die Primärschlüsselspalte für diese Tabelle.

Beispielsweise sollte die obige Personentabelle nach dem Ausführen Ihrer Abfrage die folgenden Zeilen enthalten:

+----+------------------+
| ID | E-Mail |
+----+------------------+
| 1 | [email protected] |
| 2 | [email protected] |
+----+------------------+

Diese Frage fordert uns auf, doppelte Postfächer zu löschen. Wir können zuerst alle nicht doppelten Postfächer finden, dann den Kehrwert der Zahl nehmen, um die doppelten Postfächer zu erhalten, und sie alle löschen. Wie finden wir also alle nicht doppelten Postfächer? Wir können sie nach Postfach gruppieren, dann das Schlüsselwort Min verwenden, um die kleineren auszuwählen, und dann den Komplementsatz nehmen, um sie zu löschen:

Lösung 1:

LÖSCHEN VON Person, bei der die ID NICHT IN
(WÄHLEN SIE DIE ID AUS (WÄHLEN SIE MIN(ID) ID AUS Person GRUPPE NACH E-Mail) p);

Wir können auch interne Schnittmengen verwenden, um die beiden Tabellen mit E-Mail-Adressen zu verknüpfen und dann dieselbe E-Mail-Adresse mit einer größeren ID zu löschen. Siehe den Code unten:

Lösung 2:

LÖSCHEN Sie p2 von Person p1 und verbinden Sie Person p2 
EIN p2.Email = p1.Email, WO p2.Id > p1.Id;

Anstelle von Join können wir auch where verwenden, um die beiden Tabellen direkt zu verknüpfen:

Lösung 3:

LÖSCHE p2 VON Person p1, Person p2
WO p1.Email = p2.Email UND p2.Id > p1.Id;

Ähnliche Themen:

Doppelte E-Mails

Quellen:

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

Dies ist das Ende dieses Artikels über die SQL-Implementierung von LeetCode (196. Doppelte Postfächer löschen). Weitere relevante SQL-Implementierungen zum Löschen doppelter Postfächer finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • SQL löscht doppelte E-Mail-Adressen. Likou-Fragenlösungsprozess

<<:  Div verschachteltes HTML ohne Iframe

>>:  CSS-Code zum Anordnen von Fotos in Moments

Artikel empfehlen

Detaillierte Analyse der MySQL-Abfrageabfangung

Inhaltsverzeichnis 1. Abfrageoptimierung 1. MySQL...

MySQL-Abfrageoptimierung: Ursachen und Lösungen für langsame Abfragen

Freunde, die in der Entwicklung tätig sind, insbe...

Detaillierte Erklärung des Vue-Mixins

Inhaltsverzeichnis Lokales Mixin Globale Mixins Z...

Beispiel für den Import von Nginx-Protokollen in Elasticsearch

Die Nginx-Protokolle werden von Filebeat gesammel...

Bedingtes Rendering von Vue (v-if und v-show)

Inhaltsverzeichnis 1. v-wenn 2. Verwenden Sie v-i...

Schritte für Docker zum Erstellen eines privaten Lagerhafens

Hafen Harbor ist eine Open-Source-Lösung zum Erst...

jQuery implementiert das Bouncing-Ball-Spiel

In diesem Artikel wird der spezifische Code von j...

JavaScript-HTML zur Implementierung der mobilen Red Envelope Rain-Funktionsseite

In diesem Artikelbeispiel wird der spezifische HT...