Christian Seiler: (MySQL) -> Letzten 40 Eintraege verschieben in andere Tabelle

Beitrag lesen

Hallo,

mysql> INSERT INTO aaa VALUES (id,foo,bar,test,cool) SELECT (id,foo,bar,test,cool) FROM bbb order by id desc limit 40,1000000;
ERROR 1064: You have an error in your SQL syntax near 'SELECT (id,foo,bar,test,cool) FROM bbb order by id desc limit 40,10000' at line 1

INSERT INTO aaa (id,foo,bar,test,cool) SELECT id,foo,bar,test,cool FROM bbb WHERE id < -- ID HIER EINFUEGEN -- ORDER BY id DESC;
DELETE FROM bbb WHERE ID < -- ID HIER EINFUEGEN -- ;

Die 40 letzten eintrage,
sprich die 40 eintraege mit der höchsten ID,
sollen in der Tabelle "bbb" bleiben.
Und alle anderen die aelter sind als die letzten 40,
sollen in die Tabelle aaa verschoben werden.

Suche Dir die ID aus, die das 40letzte Element darstellt und baue sie in die beiden oberen Anweisungen ein. LIMIT ist hier ungeeignet, da Du ja löschen musst. (Du kannst höchstens vorher mit LIMIT die 40 letzten auslesen (ORDER BY ID desc LIMIT 40), und dann die ID von der _letzten_ Zeile nehmen) Ich gehe hier natürlich davon aus, dass die ID ständig hochzählt, sonst funktioniert das ganze nicht...

Ach ja, warum solltest Du so etwas überhaupt wollen?

Christian

--
Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.