根据最大值删除行

Rob*_*erk 7 mysql sql max mysql-error-1093 sql-delete

如何构建mySQL查询以根据最大值删除行.

我试过了

WHERE jobPositonId = max(jobPostionId)
Run Code Online (Sandbox Code Playgroud)

但是有错误?

Kon*_*rak 15

DELETE FROM table ORDER BY jobPositonId DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)


OMG*_*ies 13

使用:

DELETE FROM TABLE t1 
       JOIN (SELECT MAX(jobPositonId) AS max_id FROM TABLE) t2 
 WHERE t1.jobPositonId  = t2.max_id
Run Code Online (Sandbox Code Playgroud)

请注意,如果存在重复项,则将删除具有该值的所有jobPositonId.

关于1093错误的愚蠢部分是你可以通过在自引用之间放置一个子查询来绕过它:

DELETE FROM TABLE
 WHERE jobPositonId = (SELECT x.id
                         FROM (SELECT MAX(t.jobPostionId) AS id 
                                 FROM TABLE t) x)
Run Code Online (Sandbox Code Playgroud)

说明

MySQL仅在使用UPDATE&DELETE语句时检查是否有正在更新的同一个表的第一级子查询.这就是为什么将它放在二级(或更深)子查询替代工作中的原因.但它只检查子查询 - JOIN语法在逻辑上是等效的,但不会触发错误.