Delete

在刪除查詢中使用子查詢

  • April 10, 2019

我有一張桌子candidate。它包含兩列nameroll。所有三行數據中的值為AA10。現在我只想刪除第二行。我該怎麼做?

假設我們有一個自動更新的發票編號,但由於某種原因它沒有更新並繼續再次註冊相同的編號。在這種情況下,如果我想刪除第二行,我應該怎麼做?

我使用了這個查詢:

delete from candidate where (SELECT * FROM candidate limit 1,1);

…但它會拋出一個錯誤說

操作數應包含一列

我希望這會給你你想要的東西。

 
with rnCTE AS
(
 SELECT *, rn = ROW_NUMBER() OVER (ORDER BY (SELECT 0))
 FROM candidate
)
DELETE
FROM rnCTE
WHERE rn = 2

要麼

刪除 rw
從 (
SELECT rn = ROW_NUMBER() OVER (ORDER BY (SELECT 0))
來自候選人
) 作為 rw
其中rw.rn = 2

對於我的 Sql



delete from candidate
where name = 'AA' and roll= '10'
limit 1
where (SELECT * FROM candidate limit 1,1)

..是錯的。你需要使用:

where some_column IN (select other_column ...)

但是不要用 MySQL 那樣做。MySQL 在使用子查詢方面非常糟糕。請改用聯接。-沒有名字的馬

引用自:https://dba.stackexchange.com/questions/77178