SQL中刪除前1000條數據

DELETE   TABLENAME
WHERE   ID IN   (SELECT   TOP   1000   ID FROM   TABLENAME)

 

後續補充_____________________________________________

由於oracle和mysql中不支持"TOP"這個函數,所以需要根據情況調整,但原理都是相同的

oracle

Oracle 不支持 TOP 關鍵字:不過這個好像並不十分嚴重,因爲它提供了 rownum 這個隱式遊標,可以實現與 TOP 類似的功能,如:

SELECT TOP 10 ... FROM WHERE ...
要寫成

SELECT ... FROM ... WHERE ... AND rownum <= 10
rownum 是記錄序號(1,2,3...),但有一個比較麻煩的事情是:如果 SQL 語句中有 ORDER BY ... 排序的時候,rownum 居然是先“標號”後排序!這樣,這個序號如果不加處理是不合乎使用需求的。

至於臨時表,Oracle 的臨時表和 SQL Server 的有很大不同。

根據這篇文章的介紹,可以如下分頁:

SELECT * FROM
      (
      SELECT A.*, rownum r
      FROM
           (
           SELECT *
           FROM Articles
           ORDER BY PubTime DESC

           ) A
      WHERE rownum <= PageUpperBound
      ) B
WHERE r > PageLowerBound;
其中藍色部分可以改爲任意的、需要的 SQL SELECT 語句,這點倒是挺方便的。
 

mysql:

order by id desc limit 0,10 按照id的倒序排序 取出前10條
order by id limit 5,10 按照id的正序排序 從第5條開始取10條

 

只需要將

DELETE   TABLENAME
WHERE   ID IN   (SELECT   TOP   1000   ID FROM   TABLENAME)

中的紅色部分替換即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章