2009-06-29 245 views
1

任何人都知道如何通過從下面的腳本編寫新的方式來刪除重複行以提高性能。刪除重複行

DELETE lt1 FROM #listingsTemp lt1, #listingsTemp lt2 
    WHERE lt1.code = lt2.code and lt1.classification_id > lt2.classification_id and (lt1.fap < lt2.fap or lt1.fap = lt2.fap) 
+0

道歉,但我不明白這個問題。你能澄清「通過寫下腳本的新方式」嗎?另外,您是否希望僅執行一次,或者在進行的基礎上,如果正在進行,您是否可以修改模式並添加標識列? – 2009-06-29 08:55:57

回答

1

1 - 爲您的表(T1) 2的標識列(ID) - 通過你的桌子上做1組與你的條件,並得到重複記錄的ID。 3 - 現在,只需從t1中刪除記錄,其中ID IN將重複設置ID。

2

Delete Duplicate Rows in a SQL Table

delete table_a 
where rowid not in 
(select min(rowid) from table_a 
group by column1, column2); 
+0

http://stackoverflow.com/questions/841447/delete-duplicate-sql-records – 2011-08-29 07:03:42

0

查找到BINARY_CHECKSUM ....你可以創建臨時表時更迅速地確定數據是一樣的可能是使用它....例如創建一個新的領域在這兩個臨時表存儲binary_checksum值...然後只是刪除那些領域等於

0

odiseh答案似乎是有效的(+1),但如果由於某種原因,你不能改變表的結構(因爲你沒有使用它的應用程序代碼),你可以編寫一份每一次都能運行的作業ht並刪除重複項(使用Moayad Mardini代碼)。