重複記錄分兩類:完全重複(所有欄位相同)與關鍵欄位重複(如 Name 相同,其他欄位不拘)。
SELECT DISTINCT * INTO #Tmp FROM tableName;
DROP TABLE tableName;
SELECT * INTO tableName FROM #Tmp;
DROP TABLE #Tmp;
根本解決:於資料表加上唯一索引欄位。
SELECT IDENTITY(INT,1,1) AS autoID, * INTO #Tmp FROM tableName;
SELECT MIN(autoID) AS autoID INTO #Tmp2 FROM #Tmp GROUP BY Name, Address;
SELECT * FROM #Tmp WHERE autoID IN (SELECT autoID FROM #Tmp2);
最後一個 SELECT 即得不重複結果集(含 autoID,實際撰寫時可於 SELECT 列表中排除)。