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
.RowIdWHEREBarisDipertahankan
.RowId IS NULLGunakan: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: