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

XHTML-Erste-Schritte-Tutorial: Was ist XHTML?

Was ist HTML? Um es einfach auszudrücken: HTML wi...

Detaillierte Erläuterung der Wissenspunkte zum MySQL Strict Mode

I. Erläuterung des strikten Modus Gemäß den Einsc...

Three.js-Beispielcode zur Implementierung des Tautropfen-Animationseffekts

Vorwort Hallo zusammen, hier ist der CSS-Assisten...

CSS3 realisiert den grafischen Fallanimationseffekt

Sehen Sie zuerst den Effekt Implementierungscode ...

Tutorial zur Nginx-Standortkonfiguration von Grund auf

Grundlagen Die Reihenfolge der Standortübereinsti...

So implementieren Sie die Vue-Bindungsklasse und den Inline-Bindungsstil

Inhaltsverzeichnis Bindungsklasse Inline-Stile bi...

WHMCS V7.4.2 Grafisches Installationstutorial

1. Einleitung WHMCS bietet eine Komplettlösung fü...

So implementieren Sie Hot Deployment und Hot Start in Eclipse/Tomcat

1. Hot Deployment: Das bedeutet, das gesamte Proj...

Native JS-Kapselung, nahtlose Karussellfunktion

Natives js-gekapseltes nahtloses Karussell-Plug-I...

Implementierung des gemeinsamen Grid-Layouts

Keine Lücken auf beiden Seiten, Lücken zwischen j...

So installieren Sie MySQL und Redis in Docker

Dieser Artikel basiert auf der CentOS 7.3-Systemu...