Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi. Baca selengkapnya.

Praktik terbaik desain database merekomendasikan penggunaan batasan UNIQUE untuk mencegah duplikasi dalam database. Namun, saat bekerja dengan database yang dirancang dengan buruk atau data yang tidak bersih, Anda mungkin perlu menemukan duplikatnya sendiri dan menghapusnya secara manual.

Baca terus untuk mengetahui cara menemukan duplikat di database SQL dan cara menghapusnya.

Buat Contoh Database

Untuk tujuan demonstrasi, buat tabel bernama Pengguna dengan kolom nama dan skor dengan menjalankan kueri SQL ini.

MENJATUHKANMEJAJIKAADAPengguna;

MEMBUATMEJAPengguna (
pk_id int KUNCI UTAMA,
nama VARCHAR (16),
skor INT,
);

Masukkan beberapa contoh nilai dengan menjalankan kueri ini:

MENYISIPKANKE DALAM
Pengguna (pk_id, nama, skor)
NILAI
(1, 'Jane', 20),
(2, 'Yohanes', 13),
(3, 'Alex', 32),
(4, 'Yohanes', 46),
(5, 'Jane', 20),
(6, 'Maria', 34),
(7, 'Jane', 20),
(8, 'Yohanes', 13)
instagram viewer

Perhatikan bahwa beberapa baris ini berisi nilai duplikat untuk kolom nama.

Silakan lihat ini Perintah dan kueri SQL jika Anda membutuhkan penjelasan yang lebih mendalam tentang cara memanipulasi database menggunakan SQL.

Menggunakan GROUP BY untuk Menemukan Nilai Duplikat

Kamu bisa gunakan pernyataan GROUP BY untuk menyusun nilai yang memenuhi syarat tertentu dalam kelompok yang sama.

Katakanlah nama dalam tabel sampel harus unik. Anda dapat menggunakan GROUP BY untuk mengelompokkan baris dengan nama yang sama.

PILIHnama, MENGHITUNG(nama)
DARI Pengguna
KELOMPOK BERDASARKAN NAMA
MEMILIKI HITUNG(nama) > 1

COUNT memungkinkan Anda memilih baris yang memiliki lebih dari satu pengguna dengan nama yang sama.

Saat Anda menjalankan kueri ini, database akan mengembalikan baris yang berisi John dan Jane sebagai duplikat.

Menghapus Duplikat Dari Database

Setelah menemukan duplikatnya, Anda mungkin ingin menghapusnya menggunakan pernyataan DELETE.

Untuk contoh ini, jalankan kueri berikut:

DENGAN cte SEBAGAI (
PILIH *
ROW_NUMBER() LEBIH DARI (
PARTISI OLEH
nama, skor
DIPESAN OLEH
nama, skor
) R
DARI
Pengguna
)

MENGHAPUSDARI cte
DIMANA R > 1;

Kueri ini menggunakan ekspresi CTE untuk menemukan duplikat lalu menghapus semuanya kecuali satu.

Mengapa Anda Harus Menghapus Data Duplikat

Menghapus data duplikat bukanlah suatu keharusan. Namun, ini memungkinkan Anda mengosongkan ruang yang digunakan baris duplikat.

Lebih sedikit baris juga berarti kueri dapat dieksekusi lebih cepat sehingga menghasilkan kinerja yang lebih tinggi. Gunakan kueri dalam tutorial ini untuk membantu Anda menemukan dan menghapus duplikat dari database SQL.