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的用法