André Laugks: MysQL - DELETE ab dem x-ten Eintrag pro ID

Beitrag lesen

Hallo!

D.h. >> ID, Eintrag, Datum

Wie gehe ich nun vor, wenn ich alle über den 10ten Eintrag (sortiert nach Datum) hinausgehenden Einträge pro ID löschen möchte?

D.h. als Resultat soll gewährleistet sein, dass pro ID stets maximal 10 Einträge vorhanden sind (sortiert nach Datum).

Das ganze geht IMHO nur mit einem Subselect.

Mit dem Subselect hole ich das Datum des 11. Eintrages mit der id=10, absteigent sortiert. Dann werden die Einträge gelöscht, die die id=10 besitzen und bei denen das Datum kleiner oder gleich ist, als das vom 11. Eintrag. Der 11. Eintrag sollte also auch mit raus fliegen.

!!! UNGETESTET !!!

  
DELETE  
FROM  
  tabelle  
WHERE  
  id = 10  
AND  
  datum <=  
     (  
       SELECT datum FROM tabelle WHERE id = 10 ORDER BY datum DESC LIMIT 10, 1  
     );  

André Laugks

--
Die Frau geht, die Hilti bleibt!