Diberdayakan oleh Blogger.

Kamis, 01 November 2012

Menghapus duplikasi data dari Database SQL

by Joielechong sipayung  |  in Tutorial at  Kamis, November 01, 2012

Ok, mari kita mulai postingan tutorial pertama kita...:D


Bagi yang berkutat dengan database pasti pernah menjumpai duplikasi data pada tabel database. Duplikasi data ini sangat menggangu performa kerja database, dan juga mungkin akan menggangu akurasi data yang memanfaatkan penjumlahan data dari tiap baris data di tabel tersebut.
Untuk itu penghapusan data duplikat ini sangatlah penting untuk dilakukan

Penghapusan duplikasi data ini dapat dilakukan dengan script SQL sederhana.

Misalkan struktur tabel database yang ingin dihapus duplikasi datanya adalah sebagai berikut, dimana nama tabelnya merupakan TabelDuplikat:


TabelDuplikat
-----------
RowID int not null identity(1,1) primary key,
Col1 varchar(20) not null,
Col2 varchar(2048) not null,
Col3 tinyint not null



Dimana diasumsikan tidak ada data yang Null di masing-masing kolom, duplikasi data dapat dihapus dengan perintah:
DELETE TabelDuplikat FROM TabelDuplikatLEFT OUTER JOIN (
   SELECT MIN(RowId) as RowId, Col1, Col2, Col3 
   FROM TabelDuplikat 
   GROUP BY Col1, Col2, Col3
) as BarisDipertahankan ON
   TabelDuplikat.RowId = BarisDipertahankan.RowIdWHERE
   BarisDipertahankan.RowId IS NULL
Gunakan:
CONVERT(uniqueidentifier, MIN(CONVERT(char(36), KolomGuidKu))) 
menggantikan MIN(RowId) jika kita menggunakan GUID sebagai ganti integer

Dengan perintah ini, kita mengelompokkan setiap kolom yang unik dan memilih Min (atau Max) RowId sebagai baris yang dipertahankan. LEFT OUTER JOIN akan mempopulasikan duplikat data sebagai baris dengan kolom id  bernilai Null (RowId), lalu duplikat data tersebut akan dihapus.


Have a Nice Day... :D ;)


Referensi:
http://stackoverflow.com/questions/18932/how-can-i-remove-duplicate-rows
https://gist.github.com/754805
http://blog.sqlauthority.com/2007/03/01/sql-server-delete-duplicate-records-rows/

0 comments:

Silahkan tinggalkan komentar anda: