使用聚合函数从 MySql 表中删除?

Posted

技术标签:

【中文标题】使用聚合函数从 MySql 表中删除?【英文标题】:Delete from MySql table using aggregate functions? 【发布时间】:2016-10-08 05:49:16 【问题描述】:

我想知道是否可以使用 一些 聚合函数删除列(在此处找到:http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html

例如说我想从我的数据库中删除最后一个user,如果我可以运行就很容易:

delete from user where id = MAX(id);

但是运行它会给我以下错误:

ERROR 1111 (HY000):组函数使用无效

mysql 是否可行?

【问题讨论】:

【参考方案1】:

你必须使用这样的查询:

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

【讨论】:

完美...应该用我的大脑来发现这一点,而不是问 SO :')【参考方案2】:

尝试使用另一个选择,如下所示:

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

【讨论】:

【参考方案3】:

你可以试试这样的:

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

【讨论】:

请注意,这个答案已经发布了,谢谢。【参考方案4】:

作为另一种选择,是使用临时变量:

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

【讨论】:

这个好像报错了,ERROR 1093 (HY000): You can't specify target table 'user' for update in FROM clause

以上是关于使用聚合函数从 MySql 表中删除?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库:聚合函数的使用

MySQL:在聚合函数中使用别名字段

MYSQL查询--聚合函数查询

mysql中常见的聚合函数

删除 initid->ptr、MySQL 聚合函数 (UDF) 时失去与 MySQL 服务器的连接

mysql中常见的聚合函数