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 Erklärung des JavaScript-Prototyps und Beispiele

Inhaltsverzeichnis Die Beziehung zwischen der Kon...

Detailliertes Tutorial zur Installation von ElasticSearch 6.4.1 auf CentOS7

1. Laden Sie das ElasticSearch 6.4.1-Installation...

Detailliertes Tutorial zur Tomcat-Installation und -Bereitstellung in Windows 10

Inhaltsverzeichnis 1 Konfiguration der Java-Umgeb...

Detaillierte Erklärung der grundlegenden Interaktion von Javascript

Inhaltsverzeichnis 1. So erhalten Sie Elemente Ho...

Reiner CSS-Header, korrigierter Implementierungscode

Es gibt zwei Hauptgründe, warum es schwierig ist,...

Detaillierte Erklärung zum Abrufen der IP-Adresse eines Docker-Containers

1. Nach dem Betreten des Containers Katze /etc/ho...

Zusammenfassung der Nginx-Konfigurationsstandortmethode

Standortabgleichsreihenfolge 1. Übereinstimmung m...

So legen Sie die Breite und Höhe von HTML-Tabellenzellen fest

Beim Erstellen von Webseiten tritt häufig das Pro...

So erstellen Sie einen MySQL-Cluster mit hoher Verfügbarkeit und Leistung

Inhaltsverzeichnis Was ist MySQL NDB Cluster? Vor...

Canvas zeichnet Rubbellos-Effekt

In diesem Artikel wird der spezifische Code zum Z...

Beispielcode für CSS3 zum Erzielen eines Bildlaufleisten-Verschönerungseffekts

Der spezifische Code lautet wie folgt: /*Breite d...

Detaillierte Erläuterung der gespeicherten Prozeduren und Funktionen von MySQL

1 Gespeicherte Prozedur 1.1 Was ist eine gespeich...