[英]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.