SQL SERVER 刪除資料表內重複的資料

  • 216
  • 0

SQL Server 根據指定的欄位去刪除資料表內重複的資料

(使用group by 以及 having)

最近在整理一個舊的資料表,資料表原本是用來記錄LOG,

所以沒有設KEY值,但是現行專案要導入EF,所以Table一定要建立KEY值,

舊有Table 要加入KEY值就要先排除掉重複的資料才能加上去

目前有一個TableA:USERLOG

我要根據 LOGINID,APID,LOGINTIME 這三個欄位來當成KEY值,

所以我必須要先刪除掉這個Table裡面這三個欄位重複的值

找出重複的資料:

SELECT LOGINID,
       APID,
       LOGINTIME 
FROM USERLOG 
GROUP BY LOGINID,APID,LOGINTIME 
HAVING COUNT(1)>1

刪除重複的資料

DELETE P FROM USERLOG P 
INNER JOIN 
(SELECT LOGINID,APID,LOGINTIME 
FROM USERLOG 
GROUP BY LOGINID,APID,LOGINTIME 
HAVING COUNT(1)>1) B 
ON P.LOGINID = B.LOGINID 
AND  P.APID = B.APID 
AND P.LOGINTIME = B.LOGINTIME;

稍微紀錄一下GROUP BY 以及HAVING的用法