2016-06-08 9 views
1

Ich frage mich, ob es möglich ist Spalten löschen einig Aggregatfunktionen (gefunden hier: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html)Löschen aus MySql-Tabelle mit Aggregatfunktionen?

Zum Beispiel sagen, dass ich die letzten user aus meiner Datenbank löschen wollte, würde es einfach sein, wenn ich könnte nur laufen:

delete from user where id = MAX(id); 

Aber das laufen gibt mir die folgende Fehlermeldung:

ERROR 1111 (HY000): Invalid use of group function

Ist dies möglich mit mysql oder nicht?

Antwort

2

Sie haben eine Abfrage wie folgt zu verwenden:

delete from user where id = (select id 
          from (select MAX(id) as id 
            from user) as t) 
+0

Perfekt ... Sollte mein Gehirn verwendet haben, um dies herauszufinden, anstatt SO zu fragen: ') – James111

0

mit einem anderen ausgewählten Versuchen wie folgt:

delete from user where id = (SELECT MAX(id) FROM user); 
0

Als weitere Option ist temporäre Variable zu verwenden:

set @id = (select max(id) from user); 
delete from user where id = @id; 
+0

Dieser scheint einen Fehler zu erzeugen, 'ERROR 1093 (HY000): Sie können die Zieltabelle' Benutzer 'nicht angeben für die Aktualisierung in der FROM-Klausel. – James111

+0

Danke, du hast Recht. Ich habe meine Antwort aktualisiert. –

0

können Sie versuchen, etwas wie:

delete from user where id = (select max(id) from user); 
+0

Beachten Sie, dass diese Antwort bereits veröffentlicht wurde, danke aber. – James111