SQL刪除數據的不同方法
SQL刪除數據量不同時,所用的語句也有所區別,下面就將為您分類介紹這兩種刪除數據的SQL語句寫法,供您參考,希望對您有所幫助。
1。當刪除的數據量比較少時(萬條數據以下):使用普通的數據刪除方法即可,delete from .....
2。當數據量很大時,如果使用一般的刪除辦法將會出現很多的問題,比如服務器超時、ODBC錯誤等等;此時我們需要改變刪除的方法,可以使用分段的形式進行數據刪除,而不是一下子全部刪除。
SET rowcount 5000
delete from collectiontext where
cltextid not in
(
select min(cltextid)
from collectiontext group by urladdr
)
while @@rowcount>0
begin
delete from collectiontext where
cltextid not in
(
select min(cltextid)
from collectiontext group by urladdr
)
end
set rowcount 0
也可以寫成:#p#
DECLARE @COUNT AS BIGINT;
SET @COUNT=1;
WHILE(@COUNT>0)
BEGIN
SET rowcount 3000
delete from collectiontext where cltextid not in
(
select min(cltextid) from collectiontext group by urladdr
)
SET @COUNT=@@ROWCOUNT;
--SET @COUNT=@COUNT-1;
END
--重置rowcount=0
set rowcount 0
3、使用TRUNCATE TABLE 清空數據,清空之間用臨時表保存要留下的數據記錄,然后再放回表中。
但是TRUNCATE處理的表不能和其他表有外鍵引用的關系,否則不能實現。
最后,實現不行的話,還可以利用數據庫管理工具自帶的數據導出功能將符合要求的數據先導出到某個文件,然后將整個表刪除再新建一個一樣結構的表,最后將剛才導出的數據導入到新建的表中。