2016-06-08 2 views
1

мне интересно, если это возможно, чтобы удалить столбцы, используя некоторые агрегатные функции (найти здесь: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html)Удалить из таблицы MySql с помощью агрегатных функций?

Например сказать, что я хотел, чтобы удалить последнюю user из моей базы данных, было бы легко, если бы я мог просто запустите:

delete from user where id = MAX(id); 

Но работает это даст мне следующее сообщение об ошибке:

ERROR 1111 (HY000): Invalid use of group function

возможно ли это с mysql или нет?

ответ

2

Вы должны использовать запрос следующим образом:

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

Perfect ... Должно ли использовать мой мозг, чтобы узнать это, а не спрашивать SO: ') – James111

0

Попробуйте с другим выбрать следующим образом:

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

В качестве другого варианта, является использование временной переменной:

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

Кажется, что это ошибка, 'ERROR 1093 (HY000): вы не можете указать целевую таблицу' user ' для обновления в разделе FROM. – James111

+0

Спасибо, ты прав. Я обновил свой ответ. –

0

вы можете попробовать что-то вроде:

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

Обратите внимание, что этот ответ уже отправлен, спасибо. – James111