SQL刪除數(shù)據(jù)的不同方法
SQL刪除數(shù)據(jù)量不同時(shí),所用的語(yǔ)句也有所區(qū)別,下面就將為您分類(lèi)介紹這兩種刪除數(shù)據(jù)的SQL語(yǔ)句寫(xiě)法,供您參考,希望對(duì)您有所幫助。
1。當(dāng)刪除的數(shù)據(jù)量比較少時(shí)(萬(wàn)條數(shù)據(jù)以下):使用普通的數(shù)據(jù)刪除方法即可,delete from .....
2。當(dāng)數(shù)據(jù)量很大時(shí),如果使用一般的刪除辦法將會(huì)出現(xiàn)很多的問(wè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
也可以寫(xiě)成:#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ù)庫(kù)管理工具自帶的數(shù)據(jù)導(dǎo)出功能將符合要求的數(shù)據(jù)先導(dǎo)出到某個(gè)文件,然后將整個(gè)表刪除再新建一個(gè)一樣結(jié)構(gòu)的表,最后將剛才導(dǎo)出的數(shù)據(jù)導(dǎo)入到新建的表中。
 















 
 
 

 
 
 
 