SQL刪除數(shù)據(jù)的不同方法
SQL刪除數(shù)據(jù)量不同時(shí),所用的語句也有所區(qū)別,下面就將為您分類介紹這兩種刪除數(shù)據(jù)的SQL語句寫法,供您參考,希望對您有所幫助。
1。當(dāng)刪除的數(shù)據(jù)量比較少時(shí)(萬條數(shù)據(jù)以下):使用普通的數(shù)據(jù)刪除方法即可,delete from .....
2。當(dāng)數(shù)據(jù)量很大時(shí),如果使用一般的刪除辦法將會出現(xiàn)很多的問題,比如服務(wù)器超時(shí)、ODBC錯(cuò)誤等等;此時(shí)我們需要改變刪除的方法,可以使用分段的形式進(jìn)行數(shù)據(jù)刪除,而不是一下子全部刪除。
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 清空數(shù)據(jù),清空之間用臨時(shí)表保存要留下的數(shù)據(jù)記錄,然后再放回表中。
但是TRUNCATE處理的表不能和其他表有外鍵引用的關(guān)系,否則不能實(shí)現(xiàn)。
最后,實(shí)現(xiàn)不行的話,還可以利用數(shù)據(jù)庫管理工具自帶的數(shù)據(jù)導(dǎo)出功能將符合要求的數(shù)據(jù)先導(dǎo)出到某個(gè)文件,然后將整個(gè)表刪除再新建一個(gè)一樣結(jié)構(gòu)的表,最后將剛才導(dǎo)出的數(shù)據(jù)導(dǎo)入到新建的表中。