SQL Problemstellung

Status
Nicht offen für weitere Antworten.

ARadauer

Top Contributor
ich habe eine Tablle, id, fk, date

select fk, count(*) from mytable group by fk having count(*) >1;
jeder fk sollte eigentlich nur einmal vorkommen... tut er aber nicht... liefert mehrere zeilen die doppelt sind... kann ich mit einem einfachen query alle doppelten löschen, dass nur noch die mit dem aktuelsten date übrig bleiben?
 

ARadauer

Top Contributor
ja wurde durch einen kleinen programmfehler ausgelöst... die spalte ist nicht unique

so in die richtung könnte es gehen oder?
DELETE FROM mytable WHERE id NOT IN ( SELECT max(id) FROM mytable GROUP BY (fk));
 
S

SlaterB

Gast
andersrum:
das ganze Problem und diese Anfrage mit dem group by entstand ja erst dadurch,
dass die Spalte nicht unique ist ;)
 

byte

Top Contributor
ja wurde durch einen kleinen programmfehler ausgelöst... die spalte ist nicht unique

so in die richtung könnte es gehen oder?
DELETE FROM mytable WHERE id NOT IN ( SELECT max(id) FROM mytable GROUP BY (fk));

Sieht gut aus imo, aber keine Garantie, wenn Du das jetzt auf Deine produktive DB loslässt. ;)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben