0%

sql self join 刪除重複資料

 

今天看爬蟲有重複資料, 也不曉得到底是程式的 bug 還是該網站有問題, 於是想說清理看看, 沒想到直接吃土 LOL
依稀記得以前在書上看過類似的用法, 想半天想不出來, 後來問 GPT 竟然是要用 self join, 年紀大了記性也開始不好 QQ
這個現在的小朋友說不定連 self join 都沒聽過 哈
沒想到竟然還有實戰用上 self join 的時刻, 有夠帥氣 XD

1
2
3
4
5
SELECT deviceId , time , COUNT(*)
FROM data
WHERE deviceId = '123'
GROUP BY deviceId , time
ORDER BY 3 DESC;

找出是重複的資料

1
2
3
4
5
6
7
8
9
SELECT *
FROM data
WHERE (deviceId, time) IN (
SELECT deviceId, time
FROM data
GROUP BY deviceId, time
HAVING COUNT(*) > 1
)
ORDER BY deviceId, time;

刪除重複的資料

1
2
3
4
5
6
DELETE m1
FROM data m1
JOIN data m2
ON m1.deviceId = m2.deviceId
AND m1.time = m2.time
AND m1.id > m2.id;
關閉