繁体   English   中英

根据最大值删除一行

[英]Deleting a row based on the max value

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

我试过了

WHERE jobPositonId = max(jobPostionId)

但是有错误?

DELETE FROM table ORDER BY jobPositonId DESC LIMIT 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语法在逻辑上是等效的,但不会触发错误。

DELETE FROM `table_name` WHERE jobPositonId = (select max(jobPostionId) from `table_name` limit 1)

要么

DELETE FROM `table_name` WHERE jobPositonId IN (select max(jobPostionId) from `table_name` limit 1)

这有效:

SELECT @lastid := max(jobPositonId ) from t1; 
DELETE from t1 WHERE jobPositonId = @lastid ; 

除了两次访问数据库之外,此技术还存在什么问题?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM