星期五, 10月 13, 2006

找出資料庫重複筆數

資料庫如果UI設計不當,沒有驗證是否重複時,很快就會面臨到這個問題了。有時候,多人維護同一格式的資料,匯整時也會有這樣的問題。
閒話休敘,直奔主題吧!要找出資料庫重複筆數,最簡單的就是用下列SQL

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

如果要判斷多個欄位,就再加工一下:

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

但這樣做有缺點,因為只能看到重複的,不能知道其它欄位的值。如果冒然用Select *,或是在select時加入其它欄位,資料庫會立即出錯。

解決的辦法如下

Select * from table where id in ( select id from table group by id having count(id)>1)

如果想要方便一點,就在加上id的排序,可以立即對照。

沒有留言: