Homepage selbermachen 7.851 Themen, 35.611 Beiträge

SQL-Abfrage

Tanja80 / 11 Antworten / Flachansicht Nickles

Hallo liebe Leute,

ich brauche Eure Hilfe!

Ich habe eine Tabelle Person mit 4 Attributen: Name, Vorname, Geburtsdatum und Geburtsort.
Ich brauche eine SQL-Abfrage, die aus Tabelle Datensätze mit Namensvetter ( Name + Vorname ) löscht, aber lässt nur den jüngsten bleiben z.B.

Schmidt | Markus | 1960 | Hamburg
Mustermann | Dieter | 1970 | Berlin
Mustermann | Dieter | 1980 | München

Ergebnis

Schmidt | Markus | 1960 | Hamburg
Mustermann | Dieter | 1980 | München

Ich bedanke mich im Voraus für Eure Muhe
Gruß
Tanja

bei Antwort benachrichtigen
basil Tanja80 „SQL-Abfrage“
Optionen

Bei deinem Problem kommt es auf die Datenbank an. Arbeitest Du mit einer Datenbank, welche Subselects unterstützt, so ist es relativ einfach:
DELETE FROM [Tabellenname] WHERE Vorname=(SELECT Vorname FROM [Tabellenname] GROUP BY (Vorname, Nachname)) AND Nachname=(SELECT Nachname FROM [Tabellenname] GROUP BY (Vorname, Nachname)) AND Geburtsdatum!=(SELECT MIN(Geburtsdatum) AS Datum FROM [Tabellenname] GROUP BY (Vorname, Nachname))
Ich habe das Statement zwar nicht getestet, aber es könnte so gehen. Unterstützt deine Datenbank keine Subselects, so wie z.B. MySQL, so wird es komplizierter. Da müsste ich selbst etwas herumexperimentieren.

bei Antwort benachrichtigen
SQL-Abfrage Tanja80
SQL-Abfrage basil
SQL-Abfrage Tanja80
SQL-Abfrage basil