一尘不染

根据最大值删除一行

mysql

如何构造一个mySQL查询以基于最大值删除行。

我试过了

WHERE jobPositonId = max(jobPostionId)

但是有错误?


阅读 265

收藏
2020-05-17

共1个答案

一尘不染

采用:

DELETE FROM TABLE t1 
       JOIN (SELECT MAX(jobPositonId) AS max_id FROM TABLE) t2 
 WHERE t1.jobPositonId  = t2.max_id

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

关于1093错误的愚蠢之处在于,您可以通过在自引用之间放置一个子查询来解决它:

DELETE FROM TABLE
 WHERE jobPositonId = (SELECT x.id
                         FROM (SELECT MAX(t.jobPostionId) AS id 
                                 FROM TABLE t) x)

说明

MySQL仅在使用UPDATEDELETE语句时检查是否存在正在更新的同一表的一级子查询。这就是为什么将其放在第二级(或更深层)的子查询替代项中的原因。但这只是检查子查询-
JOIN语法在逻辑上是等效的,但不会触发错误。

2020-05-17