Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Menemukan Nilai Duplikat dalam Tabel SQL

Umumnya, praktik terbaik adalah menempatkan batasan unik pada tabel untuk mencegah baris duplikat. Namun, Anda mungkin menemukan diri Anda bekerja dengan database di mana baris duplikat telah dibuat melalui kesalahan manusia, bug di aplikasi Anda, atau data yang tidak bersih dari sumber eksternal. Tutorial ini akan mengajari Anda cara menemukan baris duplikat ini.

Untuk mengikuti, Anda memerlukan akses baca ke database Anda dan alat untuk mengkueri database Anda.

Identifikasi Kriteria Duplikat

Langkah pertama adalah menentukan kriteria Anda untuk baris duplikat. Apakah Anda memerlukan kombinasi dua kolom untuk menjadi unik bersama-sama, atau apakah Anda hanya mencari duplikat dalam satu kolom? Dalam contoh ini, kami mencari duplikat di dua kolom di tabel Pengguna kami:nama pengguna dan email.

Tulis Kueri untuk Memverifikasi Duplikat Ada

Kueri pertama yang akan kita tulis adalah kueri sederhana untuk memverifikasi apakah duplikat memang ada dalam tabel. Untuk contoh kami, kueri saya terlihat seperti ini:

SELECT username, email, COUNT(*)
FROM users
GROUP BY username, email
HAVING COUNT(*) > 1

HAVING penting di sini karena tidak seperti WHERE , HAVING filter pada fungsi agregat.

Jika ada baris yang dikembalikan, itu berarti kami memiliki duplikat. Dalam contoh ini, hasil kami terlihat seperti ini:

nama pengguna email hitung Pete [email protected] 2 Jessica [email protected] 2 Mil [email protected] 2

Mencantumkan Semua Baris yang Mengandung Duplikat

Pada langkah sebelumnya, kueri kami mengembalikan daftar duplikat. Sekarang, kita ingin mengembalikan seluruh record untuk setiap baris duplikat.

Untuk mencapai ini, kita harus memilih seluruh tabel dan menggabungkannya ke baris duplikat kita. Permintaan kami terlihat seperti ini:

SELECT a.*
FROM users a
JOIN (SELECT username, email, COUNT(*)
FROM users 
GROUP BY username, email
HAVING count(*) > 1 ) b
ON a.username = b.username
AND a.email = b.email
ORDER BY a.email

Jika Anda perhatikan lebih dekat, Anda akan melihat bahwa kueri ini tidak terlalu rumit. SELECT initial awal cukup pilih setiap kolom dalam tabel pengguna, lalu gabungkan bagian dalam dengan tabel data duplikat dari kueri awal kami. Karena kita menggabungkan tabel dengan tabel itu sendiri, maka perlu menggunakan alias (di sini, kita menggunakan a dan b) untuk memberi label pada kedua versi.

Berikut adalah tampilan hasil kami untuk kueri ini:

id nama pengguna email 1 Pete [email protected] 6 Pete [email protected] 12 Jessica [email protected] 13 Jessica [email protected] 2 Mil [email protected] 9 Mil [email protected]

Karena kumpulan hasil ini mencakup semua id baris, kami dapat menggunakannya untuk membantu kami menghapus duplikat baris nanti.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan AT TIME ZONE untuk memperbaiki laporan lama

  2. Gaji tertinggi ke-n

  3. Pentingnya Garis Dasar

  4. File DSN dan Perangkat Lunak IRI

  5. Memahami Tipe Data SQL – Yang Perlu Anda Ketahui Tentang Tipe Data SQL