[資料庫] 利用 SQL 找出欄位值重覆的記錄

要找出欄位值重覆的記錄的狀況倒是蠻常見的,最簡單的做法就是利用 Group By。

SELECT * FROM table
GROUP BY id
HAVING count(*)>1

如上所示,就是找出 id 重覆次數超過1以上的欄位,如果有多個欄位為重覆條件的話,就改成:

SELECT * FROM table
GROUP BY id1, id2
HAVING count(*)>1

如果要去除掉 Table (A) 裡面的重覆欄位記錄,有二種方法:

(第一種)
先把重覆的資料利用 Subquery Inert 到另一個 Table (B) ,刪掉 Table (A) 的重覆記錄後,再把 Table (B) 的資料插入 Table (A) 來。

(第二種)
先把重覆的資料利用 Subquery Inert 到另一個 Table (B),再把非重覆的資料Subquery Inert 到同一個 Table (B),最後把 Table (A) 殺了,用 Table (B) 取代 Table (A)。

執行提示:

INSERT INTO temp_table
WHERE
SELECT * FROM table
GROUP BY id1, id2
HAVING count(*)>1

先插入重覆資料到暫存表單,如果二個 table 的結構不同,就必須要指定欄位。

INSERT INTO temp_table (field1, field2)
WHERE
SELECT field1,field2 FROM table
GROUP BY id1, id2
HAVING count(*)>1

流程已經說的很清楚了,再來的細節就不用多說了,應該很簡單了啦。^^

6 comments On [資料庫] 利用 SQL 找出欄位值重覆的記錄

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar