Löschen Doppelte Zeilen in SQL
Ich habe eine Tabelle mit unique-id, aber doppelte Reihe von Informationen.
Finde ich die Zeilen mit den Duplikaten mithilfe dieser Abfrage
SELECT
PersonAliasId, StartDateTime, GroupId, COUNT(*) as Count
FROM
Attendance
GROUP BY
PersonAliasId, StartDateTime, GroupId
HAVING
COUNT(*) > 1
Kann ich Sie manuell löschen Sie die Zeilen, während die 1 brauche ich mit dieser Abfrage
Delete
From Attendance
Where Id IN(SELECT
Id
FROM
Attendance
Where PersonAliasId = 15
and StartDateTime = '9/24/2017'
and GroupId = 1429
Order By ModifiedDateTIme Desc
Offset 1 Rows)
Ich bin nicht versiert in SQL genug, um herauszufinden, wie man die Zeilen in der ersten Abfrage zum löschen der Duplikate, so dass hinter dem jüngsten. Es gibt über 3481 Datensätze von der ersten Abfrage zurückgegeben, dies zu tun eins nach dem anderen manuell.
Wie finde ich die doppelten Zeilen wie die erste Abfrage und löschen alle, aber die jüngsten, wie der zweite?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine
Common Table Expression
zum löschen der Duplikate:Dadurch wird der aktuellste Datensatz für jede
PersonAliasId - StartDateTime - GroupId
Kombination.Verwenden Sie die MAX-Aggregat-Funktion zu identifizieren, die neuesten startdatumuhrzeit für jede Gruppe/person Kombination. Dann löschen Sie Datensätze, die nicht über die neueste Zeit.
Gleiche wie die CTE-Antwort - geben, Felix die Prüfung