網路城邦

上一篇 回創作列表 下一篇   字體:
找出資料庫內欄位值重覆的記錄
2010/02/06 09:02:26瀏覽755|回應0|推薦1

要找出欄位值重覆的記錄的狀況倒是蠻常見的,最簡單的做法就是利用 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
流程已經說的很清楚了,再來的細節就不用多說了,應該很簡單了啦。^^

distinct 也蠻常用的,不過它的用處是把重覆的資料當作沒看到,但沒辦法抓出重覆的資料來喔! ^_^

( 興趣嗜好電腦3C )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=maxmas&aid=3755905