[英]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仅在使用UPDATE
& DELETE
语句时检查是否存在正在更新的同一表的一级子查询。 这就是为什么将其放在第二级(或更深层)的子查询替代项中的原因。 但这只是检查子查询-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.