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

Bagaimana Menemukan Baris Duplikat di SQL?

Masalah:

Anda memiliki baris duplikat di tabel Anda, dengan hanya ID yang unik. Bagaimana Anda menemukan entri duplikat itu?

Contoh:

Basis data kami memiliki tabel bernama product dengan data pada kolom berikut:id , name , dan category .

id nama kategori
1 steak daging
2 kue permen
3 d>steak daging
4 babi daging
5 kue permen
6 kue permen

Mari temukan duplikat nama dan kategori produk. Anda dapat menemukan duplikat dengan mengelompokkan baris, menggunakan COUNT fungsi agregat, dan menentukan HAVING klausa yang digunakan untuk memfilter baris.

Solusi:

SELECT  name,
 category,
FROM product
GROUP BY name, category
HAVING COUNT(id) >1;

Kueri ini hanya mengembalikan rekaman duplikat—rekaman yang memiliki nama dan kategori produk yang sama:

nama kategori
steak daging
kue permen

Ada dua produk duplikat di meja kami:steak dari kategori daging dan kue dari kategori manisan. Produk pertama diulang dua kali dalam tabel, sedangkan yang kedua muncul tiga kali.

Diskusi:

Untuk memilih nilai duplikat, Anda perlu membuat grup baris dengan nilai yang sama, lalu memilih grup dengan jumlah lebih dari satu. Anda dapat mencapainya dengan menggunakan GROUP BY dan HAVING klausa.

Langkah pertama adalah membuat grup record dengan nilai yang sama di semua kolom non-ID (dalam contoh kita, name dan category ). Anda melakukan ini dengan GROUP BY ayat. Setelah GROUP BY kata kunci, Anda menempatkan nama kolom yang ingin Anda gunakan untuk pengelompokan. Kami mengecualikan id kolom karena ini adalah kunci utama tabel kami; menurut definisi, setiap baris akan memiliki nilai yang berbeda di bawah kolom itu. Jika kami menyertakannya, maka kami tidak akan dapat mendeteksi duplikat!

Kami ingin mencari grup dengan lebih dari satu baris; grup tersebut harus berisi duplikat menurut definisi, selama kami telah mengelompokkan pada kolom yang benar. Untuk melakukan ini, kami menggunakan HAVING ayat. Kondisi yang kita tentukan adalah jumlah elemen dalam grup—COUNT(id) —harus lebih besar dari satu:COUNT(id) > 1 . Ingat bahwa HAVING memungkinkan Anda untuk memfilter grup; WHERE adalah untuk memfilter baris individual.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dasar-dasar ekspresi tabel, Bagian 9 – Tampilan, dibandingkan dengan tabel turunan dan CTE

  2. Visualisasi Data Menggunakan Apache Zeppelin – Tutorial

  3. Seni Menggabungkan Data dalam SQL dari Sederhana ke Agregasi Geser

  4. Perubahan Konektor Data pada tahun 2020.24

  5. Driver ODBC HubSpot