Delete
在刪除查詢中使用子查詢
我有一張桌子
candidate
。它包含兩列name
和roll
。所有三行數據中的值為AA
和10
。現在我只想刪除第二行。我該怎麼做?假設我們有一個自動更新的發票編號,但由於某種原因它沒有更新並繼續再次註冊相同的編號。在這種情況下,如果我想刪除第二行,我應該怎麼做?
我使用了這個查詢:
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 在使用子查詢方面非常糟糕。請改用聯接。-沒有名字的馬