1. 程式人生 > >SQL中刪除前1000條資料

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)

中的紅色部分替換即可