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)
中的紅色部分替換即可