2012-10-08 44 views
15

是否有SQL命令刪除數據庫表的前X行?刪除數據庫的前X行

我有一個數據庫表,其中包含一些信息,但沒有ID或自動遞增值和處理該表的第一個X行的程序。 之後這些X行需要被刪除。因此,標準查詢是:

DELETE FROM table WHERE something = value; 

那麼,有沒有建立類似的查詢方式:

DELETE FROM table WHERE rownumber <= X; 

我已經試過此命令,但沒有任何反應到數據庫.. 你有任何線索?

回答

33

您刪除使用LIMIT

DELETE FROM table WHERE condition LIMIT 10 

或者,如果你不想要的條件

DELETE FROM table LIMIT 10 

請記住,在行將被刪除的順序是不確定的 - 這取決於你的DBMS配置和表索引。您應該包含一個ORDER BY,以便刪除按照定義的順序完成,例如, ORDER BY id ASC先刪除最低的ID。

查看MySQL documentation for DELETE瞭解更多詳情。

+1

當你這樣做的時候要非常小心。如果你添加一個索引或類似的東西,select的順序可以改變。在不添加where子句的情況下,SQL服務器可以最輕鬆地進行選擇。 – Romo

+0

這是正確的。通常的'ORDER BY'要求適用。我已編輯來反映這一點。 – Polynomial

+0

感謝您的回答! 我試過這個,不幸的是它只適用於條件給出時。 所以我現在使用 '從表中刪除a_field> 0 LIMIT X;' 這個工程到目前爲止。謝謝:-) – coroner