簡體   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