Um die doppelten Zeilen aus der Tabelle in SQL Server zu löschen, befolgen Sie diese Schritte:
- Suchen Sie doppelte Zeilen mithilfe der GROUP BY-Klausel oder der ROW_NUMBER() -Funktion.
- Verwenden Sie die DELETE-Anweisung, um die doppelten Zeilen zu entfernen.
Ein Beispiel einer Tabelle einrichten
DROP TABLE IF EXISTS Kontakt;
CREATE TABLE Kontakt(
Kontakt_id INT IDENTITY(1,1) PRIMARY KEY,
vorname NVARCHAR(100) NOT NULL,
nachname NVARCHAR(100) NOT NULL,
E-Mail NVARCHAR(255) NOT NULL,
);
Werte einfügen
INSERT INTO Kontakt
(vorname,nachname,E-Mail)
VALUES
('Syed','Abbas','syed.abbas@example.com'),
('Catherine','Abel','catherine.abel@example.com'),
('Kim','Abercrombie','kim.abercrombie@example.com'),
('Kim','Abercrombie','kim.abercrombie@example.com'),
('Kim','Abercrombie','kim.abercrombie@example.com'),
('Hazem','Abolrous','hazem.abolrous@example.com'),
('Hazem','Abolrous','hazem.abolrous@example.com'),
('Humberto','Acevedo','humberto.acevedo@example.com'),
('Humberto','Acevedo','humberto.acevedo@example.com'),
('Pilar','Ackerman','pilar.ackerman@example.com');
![Bildbeschreibung eingeben]()
Abfrage
SELECT
Kontakt_id,
vorname,
nachname,
E-Mail
FROM
Kontakt;
Doppelte Zeilen aus einer Tabelle löschen
WITH cte AS (
SELECT
Kontakt_id,
vorname,
nachname,
E-Mail,
ROW_NUMBER() OVER (
PARTITION BY
vorname,
nachname,
E-Mail
ORDER BY
vorname,
nachname,
E-Mail
) row_num
FROM
Kontakt
)
DELETE FROM cte
WHERE row_num > 1;
Sollte den Datensatz jetzt löschen
![Bildbeschreibung eingeben]()