SQLShack (Deutsch)

In diesem Artikel wird der Vorgang erläutert zum Ausführen einer SQL-Löschaktivität für doppelte Zeilen aus einer SQL-Tabelle.

Einführung

Beim Entwerfen von Objekten in SQL Server sollten wir bestimmte bewährte Methoden befolgen. Beispielsweise sollte eine Tabelle Primärschlüssel, Identitätsspalten, gruppierte und nicht gruppierte Indizes sowie Einschränkungen zur Gewährleistung der Datenintegrität und -leistung enthalten. Selbst wenn wir die Best Practices befolgen, können Probleme wie doppelte Zeilen auftreten. Möglicherweise werden diese Daten beim Datenimport auch in Zwischentabellen abgerufen, und wir möchten doppelte Zeilen entfernen, bevor sie tatsächlich in die Produktionstabellen eingefügt werden.

Angenommen, Ihre SQL-Tabelle enthält doppelte Zeilen und Sie möchten diese doppelten Zeilen entfernen . Oft stehen wir vor diesen Problemen. Es wird auch empfohlen, die relevanten Schlüssel zu verwenden, um die Möglichkeit doppelter Zeilen auszuschließen. Wenn die Tabelle jedoch bereits doppelte Zeilen enthält. Wir müssen bestimmte Methoden befolgen, um doppelte Daten zu bereinigen. In diesem Artikel werden die verschiedenen Methoden zum Entfernen doppelter Daten aus der SQL-Tabelle erläutert.

Erstellen Sie eine Beispieltabelle für Mitarbeiter und fügen Sie einige Datensätze ein.

In der Tabelle haben wir eine wenige doppelte Datensätze, und wir müssen sie entfernen.

SQL löscht doppelte Zeilen mit Group By und mit Klausel

Bei dieser Methode verwenden wir die SQL GROUP BY-Klausel, um das Duplikat zu identifizieren Reihen. Die Group By-Klausel gruppiert Daten gemäß den definierten Spalten, und wir können die COUNT-Funktion verwenden, um das Auftreten einer Zeile zu überprüfen.

Führen Sie beispielsweise die folgende Abfrage aus, und diese Datensätze haben ein größeres Vorkommen als 1 in der Employee-Tabelle.

In der obigen Ausgabe haben wir zwei doppelte Datensätze mit ID 1 und 3.

  • Emp ID 1 hat zwei Vorkommen in der Mitarbeitertabelle
  • Emp ID 3 hat drei Vorkommen in der Mitarbeitertabelle

Wir müssen behalten eine einzelne Zeile und entfernen Sie die doppelten Zeilen. Wir müssen nur doppelte Zeilen aus der Tabelle entfernen. Beispielsweise wird die EmpID 1 zweimal in der Tabelle angezeigt. Wir möchten nur ein Vorkommen davon entfernen.

Wir verwenden die SQL MAX-Funktion, um die maximale ID jeder Datenzeile zu berechnen.

Im folgenden Screenshot sehen wir, dass die Die obige Select-Anweisung schließt die Max-ID jeder doppelten Zeile aus und wir erhalten nur den minimalen ID-Wert.

Um diese Daten zu entfernen, ersetzen Sie die Wählen Sie zuerst mit der SQL-Löschanweisung gemäß der folgenden Abfrage aus.

Wenn Sie die Löschanweisung ausgeführt haben, führen Sie eine Auswahl für eine Employee-Tabelle durch. Wir erhalten die folgenden Datensätze, die keine doppelten Zeilen enthalten.

SQL löscht doppelte Zeilen mit Common Table Expressions (CTE)

Wir können Common Table Expressions verwenden, die allgemein als CTE bezeichnet werden, um doppelte Zeilen in SQL Server zu entfernen. Es ist ab SQL Server 2005 verfügbar.

Wir verwenden eine SQL-Funktion ROW_NUMBER und fügen eine eindeutige fortlaufende Zeilennummer für die Zeile hinzu.

Im folgenden CTE wird das partitioniert Daten, die die PARTITION BY-Klausel für die Spalte und verwenden und eine Zeilennummer für jede Zeile generieren.

Wenn in einer Ausgabe eine Zeile den Wert der Spalte größer als 1 hat, wird angezeigt, dass es sich um ein Duplikat handelt Zeile.

Wir können die doppelten Zeilen mit dem folgenden CTE entfernen.

Es werden die Zeilen entfernt mit dem Wert größer als 1

RANK-Funktion für SQL doppelte Zeilen löschen

Mit der SQL-RANK-Funktion können Sie auch doppelte Zeilen entfernen. Die SQL-RANK-Funktion gibt unabhängig von der doppelten Zeile eine eindeutige Zeilen-ID für jede Zeile an.

In der folgenden Abfrage verwenden wir eine RANK-Funktion mit der PARTITION BY-Klausel. Die PARTITION BY-Klausel bereitet eine Teilmenge von Daten für die angegebenen Spalten vor und gibt den Rang für diese Partition an.

Im Screenshot: Sie können feststellen, dass wir die Zeile mit einem Rang größer als eins entfernen müssen. Entfernen Sie diese Zeilen mithilfe der folgenden Abfrage.

Verwenden Sie das SSIS-Paket, um doppelte Zeilen in SQL zu löschen.

Der SQL Server-Integrationsdienst bietet verschiedene Transformationsoperatoren, die sowohl Administratoren als auch Entwicklern helfen, den manuellen Aufwand zu reduzieren und optimieren Sie die Aufgaben. Das SSIS-Paket kann die doppelten Zeilen auch aus einer SQL-Tabelle entfernen.

Verwenden Sie den Sortieroperator in einem SSIS-Paket, um doppelte Zeilen zu entfernen.

Wir können die Werte mit einem Sortieroperator sortieren eine SQL-Tabelle. Sie könnten fragen, wie durch Datensortierung doppelte Zeilen entfernt werden können?

Erstellen Sie das SSIS-Paket, um diese Aufgabe anzuzeigen.

  • Erstellen Sie in SQL Server Data Tools ein neues Integrationspaket.Fügen Sie im neuen Paket eine OLE DB-Quellverbindung hinzu.
  • Öffnen Sie den OLE DB-Quellcode-Editor, konfigurieren Sie die Quellverbindung und wählen Sie die Zieltabelle aus.

  • Klicken Sie auf Datenvorschau und Sie können sehen, dass die Quelltabelle immer noch doppelte Daten enthält.

  • Fügen Sie einen Sortieroperator aus der SSIS-Toolbox für den SQL-Löschvorgang hinzu und verknüpfen Sie ihn mit den Quelldaten.

Doppelklicken Sie für die Konfiguration des Sortieroperators darauf und wählen Sie die Spalten aus, die doppelte Werte enthalten. In unserem Fall befindet sich der doppelte Wert in ,, Spalten.

Wir können auch die aufsteigenden oder absteigenden Sortiertypen für die Spalten verwenden. Die Standardsortiermethode ist aufsteigend. In der Sortierreihenfolge können wir die Spaltensortierreihenfolge auswählen. Die Sortierreihenfolge 1 zeigt die Spalte, die zuerst sortiert wird.

Beachten Sie unten links das Kontrollkästchen Zeilen entfernen mit doppelte Sortierwerte.

Es wird die Aufgabe übernehmen, doppelte Zeilen für uns aus den Quelldaten zu entfernen. Aktivieren Sie dieses Kontrollkästchen und klicken Sie auf „OK“. Es führt die SQL-Löschaktivität im SSIS-Paket aus.

Sobald wir auf OK klicken, kehrt es zur Registerkarte Datenfluss zurück. und wir können das folgende SSIS-Paket sehen.

Wir können SQL Server-Ziele hinzufügen, um die Daten nach dem Entfernen doppelter Zeilen zu speichern. Wir möchten nur überprüfen, ob der Sortieroperator die Aufgabe für uns erledigt oder nicht.

Fügen Sie eine SQL-Multicast-Transformation aus der SSIS-Toolbox hinzu, wie unten gezeigt.

Um die verschiedenen Daten anzuzeigen, klicken Sie mit der rechten Maustaste auf den Connector zwischen Sortieren und Multicast. Klicken Sie auf Datenanzeige aktivieren.

Das gesamte SSIS-Paket sieht wie folgt aus.

Führen Sie das Paket aus, um einen SQL-Löschvorgang auszuführen. Es öffnet den Viewer für die Ausgabe von Ausgabedaten in der Aufgabe Datenfluss. In diesem Daten-Viewer können Sie nach dem Entfernen der doppelten Werte unterschiedliche Daten sehen.

Schließen Sie diese und das SSIS-Paket wird erfolgreich angezeigt ausgeführt.

Schlussfolgerung

In diesem Artikel haben wir den Prozess des Löschens doppelter Zeilen durch SQL mit untersucht verschiedene Möglichkeiten wie T-SQL-, CTE- und SSIS-Paket. Sie können die Methode verwenden, mit der Sie sich wohl fühlen. Ich würde jedoch vorschlagen, diese Verfahren und Pakete nicht direkt auf die Produktionsdaten zu implementieren. Sie sollten in einer niedrigeren Umgebung testen.

  • Autor
  • Letzte Beiträge
Als MCSA-zertifizierter und Microsoft-zertifizierter Trainer in Gurgaon, Indien, mit 13 Jahren Erfahrung, arbeitet Rajendra für eine Vielzahl großer Unternehmen, die sich auf Strategien und Implementierung zur Leistungsoptimierung, Überwachung, Hochverfügbarkeit sowie Notfallwiederherstellung konzentrieren. Er ist Autor von Hunderten maßgeblicher Artikel zu SQL Server, Azure, MySQL, Linux, Power BI, Leistungsoptimierung, AWS / Amazon RDS, Git und verwandten Technologien, die bisher von über 10 Millionen Lesern angesehen wurden.
Mit seiner 50-teiligen Serie zu SQL Server Always On Availability Groups ist er der Schöpfer einer der größten kostenlosen Online-Artikelsammlungen zu einem einzigen Thema. Aufgrund seines Beitrags zur SQL Server-Community wurde er mit verschiedenen Preisen ausgezeichnet, darunter der renommierte „Beste Autor des Jahres“ in den Jahren 2020 und 2021 bei SQLShack.
Raj ist immer an neuen Herausforderungen interessiert, wenn Sie also Beratung benötigen Hilfe zu jedem Thema, das in seinen Schriften behandelt wird, kann unter [email protected] erreicht werden.
Alle Beiträge von Rajendra Gupta anzeigen

Neueste Beiträge von Rajendra Gupta (alle anzeigen)
  • Durchführen kleinerer und größerer Versions-Upgrades für AWS RDS SQL Server – 29. Januar 2021
  • Bereitstellen von AWS RDS PostgreSQL-Instanzen – 27. Januar 2021
  • Migrieren Ihrer lokalen SQL-Datenbanken zu AWS RDS SQL Server mithilfe von AWS DMS – 25. Januar , 2021

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.