mysql - 绕过 DELETE 查询中的自引用

标签 mysql

我正在尝试删除所有不是其名称下最新版本的记录,但显然您无法引用访问您正在同一查询中修改的表。

我试过了,但由于上述原因它不起作用:

DELETE FROM table
WHERE CONCAT(name, version ) NOT IN (
SELECT CONCAT( name, MAX( version ) )
FROM table
GROUP name
)

我该如何解决这个问题?

干杯

最佳答案

Wrap the inner reference in a derived table .

DELETE FROM table
WHERE  Concat(name, version) NOT IN (SELECT nv
                                     FROM   (SELECT Concat(name, Max(version))
                                                    AS nv
                                             FROM   table
                                             GROUP  BY name) AS derived)  

关于mysql - 绕过 DELETE 查询中的自引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4606915/

相关文章:

MySQL 显示 "possible_keys"但不使用它

mysql - 索引 5 列

mysql - 导入大型数据库时的问题静态分析

mysql - 如何将CSV文件中的数据导入MySQL数据库

php - fatal error : Can't use function return value in write context in

Mysql "magic"catch all column for select 语句

php - MySQL 从其他表更新表

php - 将数百万行从一个 mysql 表迁移到另一个作为 Laravel 5 中的副本

mysql - SQL 如果为 NULL 则插入

javascript - PHP/HTML/MySQL 数据库查询,具有多个搜索参数并显示结果