Solusi masuk untuk menghapus baris duplikat dari kumpulan hasil Anda adalah dengan memasukkan kata kunci yang berbeda dalam pernyataan pemilihan Anda. Ini memberi tahu mesin kueri untuk menghapus duplikat untuk menghasilkan kumpulan hasil di mana setiap baris unik. Tahukah Anda bahwa klausa grup menurut juga dapat digunakan untuk menghapus duplikat? Show
Kata Kunci Distinct dan DistinctrowKata kunci yang berbeda datang langsung setelah SELECT dalam pernyataan kueri dan menggantikan semua kata kunci opsional, yang merupakan default. Distinctrow adalah alias untuk yang berbeda dan menghasilkan hasil yang sama persis SELECT [ALL | DISTINCT | DISTINCTROW ] select_expr [FROM table_references [WHERE where_condition] Untuk mengilustrasikan cara kerjanya, mari pilih beberapa data dari tabel berikut, yang berisi daftar buah dan warnanya nama warna apel merah apel hijau apel kuning pisang kuning pisang hijau anggur merah anggur putih Kueri berikut akan mengambil semua nama buah dari tabel dan mencantumkannya dalam urutan abjad SELECT name FROM fruits;_ Tanpa informasi warna, kami memiliki kelipatan dari setiap jenis buah nama apel apel apel pisang pisang anggur anggur Sekarang mari coba kueri lagi dengan kata kunci yang berbeda SELECT DISTINCT name FROM fruits; Seperti yang diharapkan, kami sekarang hanya memiliki satu contoh dari setiap jenis buah nama apel pisang anggur Andai saja selalu semudah itu. Pencarian Internet cepat pada frasa "sql menghilangkan duplikat" menunjukkan bahwa ada lebih banyak untuk menghapus nilai duplikat daripada memasukkan kata kunci yang berbeda ke dalam pernyataan SELECT Anda Kapan Baris Duplikat Bukan Baris DuplikatSatu masalah yang tidak dapat dipecahkan oleh kata kunci yang berbeda adalah terkadang menghapus duplikat menciptakan hasil yang menyesatkan. Perhatikan skenario berikut Klien ingin membuat daftar karyawan mereka untuk menghasilkan beberapa statistik. Inilah beberapa SQL untuk melakukan itu SELECT name, gender, salary FROM employees ORDER BY name; Anehnya, ini menghasilkan baris duplikat untuk "Kristen Ruegg" Nama jenis kelamin gaji Allan Smithie m 4900 Barbara Breitenmoser f (BATAL) Jon Simpson m 4500 Kirsten Ruegg f 5600 Kristen Ruegg f 5600 Peter Jonson m 5200 Ralph Teller m 5100 Klien menjawab bahwa mereka tidak menginginkan duplikat, jadi pengembang menambahkan kata kunci berbeda yang dapat dipercaya ke pernyataan SELECT. Ini menghasilkan hasil yang diinginkan, kecuali untuk satu detail kecil. Ada dua karyawan dengan nama yang sama. Menambahkan kata kunci yang berbeda membuat hasil yang salah dengan menghapus baris yang valid. Menyertakan nomor_emp_id_unik ke daftar bidang menegaskan bahwa memang ada dua Kristen Rueggs SELECT name, gender, salary, emp_id_number FROM employees ORDER BY name;_ Inilah data yang dipermasalahkan yang menunjukkan emp_id_numbers unik nama jenis kelamin gaji emp_id_number Kirsten Ruegg f 5600 3462 Kristen Ruegg f 5600 2223 Moral dari cerita ini adalah ini. Saat menggunakan kata kunci yang berbeda, pastikan Anda tidak secara tidak sengaja menghapus data yang valid Membandingkan Distinct dengan Group ByMenggunakan perbedaan secara logis setara dengan menggunakan grup dengan semua kolom yang dipilih tanpa fungsi agregat. Untuk kueri seperti itu, kelompokkan dengan hanya menghasilkan daftar nilai pengelompokan yang berbeda. Saat menampilkan dan mengelompokkan berdasarkan satu kolom, kueri menghasilkan nilai berbeda di kolom tersebut. Namun, jika Anda menampilkan dan mengelompokkan menurut beberapa kolom, kueri akan menghasilkan kombinasi nilai yang berbeda di setiap kolom. Misalnya, kueri berikut menghasilkan kumpulan baris yang sama seperti yang dilakukan SELECT pertama kami SELECT name FROM fruits GROUP BY name; Demikian pula, pernyataan berikut menghasilkan hasil yang sama seperti SELECT yang berbeda pada tabel karyawan SELECT name, gender, salary FROM employees GROUP BY name;_ Perbedaan antara yang berbeda dan yang dikelompokkan menurut adalah bahwa kelompok menurut menyebabkan pengurutan baris. Karena itu SELECT name, gender, salary FROM employees GROUP BY name;_ …sama dengan SELECT DISTINCT name, gender, salary FROM employees ORDER BY name;_ Menghitung DuplikatDistinct dapat digunakan dengan fungsi COUNT() untuk menghitung berapa banyak nilai berbeda yang terdapat dalam kolom. COUNT(ekspresi berbeda) menghitung jumlah nilai non-NULL yang berbeda (unik) dari ekspresi yang diberikan. Ekspresi dapat berupa nama kolom untuk menghitung jumlah nilai non-NULL yang berbeda dalam kolom Berikut data tabel karyawan selengkapnya Indo dept_id jenis kelamin nama gaji emp_id_number 1 2 m Jon Simpson 4500 1234 2 4 f Barbara Breitenmoser (BATAL) 9999 3 3 f Kirsten Ruegg 5600 3462 4 1 m Ralph Teller 5100 6543 5 2 m Peter Jonson 5200 9747 6 2 m Allan Smithie 4900 6853 7 4 f Kirsten Ruegg 5600 2223 8 3 f Kirsten Ruegg 4400 2765 Menerapkan fungsi Hitung berbeda pada bidang nama menghasilkan enam nama unik SELECT Count(DISTINCT name) FROM employees;_ Hitung (nama BERBEDA) 6 Dimungkinkan juga untuk memberikan daftar ekspresi yang dipisahkan dengan koma. Dalam hal ini, COUNT() mengembalikan jumlah kombinasi nilai berbeda yang tidak mengandung nilai NULL. Kueri berikut menghitung jumlah baris berbeda yang tidak memiliki nama maupun gaji NULL SELECT name FROM fruits;_0 Hitung(DISTINCT nama, gaji) 6 Anda juga dapat mengelompokkan jumlah duplikat per grup menggunakan sedikit matematika sehubungan dengan klausa grup demi. Berikut kueri untuk menghitung nama ganda untuk setiap departemen SELECT name FROM fruits;_1 dept_id nama rangkap 1 0 2 0 3 1 4 0 Kueri ini membantu Anda mengkarakterisasi tingkat duplikat, tetapi tidak menunjukkan kepada Anda nilai mana yang digandakan. Untuk melihat nama mana yang digandakan dalam tabel karyawan, gunakan kueri ringkasan yang menampilkan nilai non-unik beserta hitungannya SELECT name FROM fruits;_2 dept_id nama nama_hitung 2 Allan Smithie 1 4 Barbara Breitenmoser 1 2 Jon Simpson 1 3 Kirsten Ruegg 2 4 Kirsten Ruegg 1 2 Peter Jonson 1 1 Ralph Teller 1 Karena kami hanya tertarik pada duplikat, kami dapat memfilter yang lainnya menggunakan klausa HAVING. Ini seperti klausa WHERE, kecuali digunakan dengan group by untuk mempersempit hasil SELECT name FROM fruits;_3 Sekarang kita bisa melihat nama mana yang digandakan, serta berapa jumlahnya dept_id nama nama_hitung 3 Kirsten Ruegg 2 Menampilkan Nilai Minimum atau Maksimum Per-Grup dalam Baris DuplikatSeperti yang kita lihat di contoh terakhir, grup dengan klausa menyebabkan fungsi agregat diterapkan untuk setiap nilai unik dalam daftar bidang. Anda harus menyadari bahwa kolom yang tidak ada dalam daftar grup menurut bidang tidak harus berada pada baris yang sama dengan nilai agregat. Sebuah contoh pasti ada di sini. Kueri berikut menampilkan gaji tertinggi untuk setiap departemen SELECT name FROM fruits;_4 Tujuannya juga untuk menampilkan informasi tentang individu yang mendapatkan gaji tertinggi. Namun, bukan itu yang dikembalikan di sini dept_id nama jenis kelamin max_salary 1 Ralph Teller m 5100 2 Jon Simpson m 5200 3 Kirsten Ruegg f 5600 4 Barbara Breitenmoser f 5600 Masalahnya adalah gaji adalah satu-satunya bidang gabungan karena fungsi agregat Max() diterapkan padanya. Akibatnya, nama depan dan nilai jenis kelamin yang ditemui untuk setiap grup menurut bidang adalah yang ditampilkan. Melihat tabel, Anda akan melihat bahwa, sementara Ralph Teller adalah satu-satunya anggota departemen 1, Jon Simpson hanya memperoleh $4.500. Peter Jonson benar-benar pemilik perbedaan itu, tetapi mesin kueri memilih nama depan dan jenis kelamin yang ditemukan memiliki dept_id 2 Solusinya adalah menggabungkan hasil GROUP_BY dengan tabel asli menggunakan bidang yang dikelompokkan. Dalam hal ini, kami hanya memiliki satu bidang, dan itu adalah gaji SELECT name FROM fruits;_5 Sekarang bidang nama dan jenis kelamin menjadi milik penerima gaji terbesar dept_id nama jenis kelamin max_salary 1 Ralph Teller m 5100 2 Peter Jonson m 5200 3 Kirsten Ruegg f 5600 4 Kirsten Ruegg f 5600 Ada teknik lain yang tidak tercakup, seperti penggunaan tabel sementara dan SQL dinamis. Berikut adalah informasi yang lebih mendalam tentang cara menghapus rekaman duplikat. Artikel ini membahas klausa group by dan HAVING secara lebih rinci Bagaimana cara menemukan dan menghapus catatan duplikat di MySQL?MySQL dapat menghapus rekaman duplikat terutama dengan tiga cara. . Hapus Rekaman Duplikat Menggunakan Hapus Gabung. Kita dapat menggunakan pernyataan DELETE JOIN di MySQL yang memungkinkan kita menghapus rekaman duplikat dengan cepat. . Hapus Data Duplikat Menggunakan Fungsi ROW_NUMBER(). . HAPUS Baris Duplikat Menggunakan Tabel Perantara Bagaimana cara menemukan dan menghapus baris duplikat?Hapus nilai duplikat . Pilih rentang sel yang memiliki nilai duplikat yang ingin Anda hapus. Tip. Hapus kerangka atau subtotal apa pun dari data Anda sebelum mencoba menghapus duplikat Klik Data > Hapus Duplikat, lalu Di Bawah Kolom, centang atau hapus centang pada kolom tempat Anda ingin menghapus duplikat. . Klik Oke Bagaimana cara menemukan baris duplikat di MySQL?Kita dapat menemukan entri duplikat dalam tabel menggunakan langkah-langkah di bawah ini. . Pertama, kita akan menggunakan klausa GROUP BY untuk mengelompokkan semua baris berdasarkan kolom yang diinginkan. . Kedua, kita akan menggunakan fungsi COUNT() di klausa HAVING yang memeriksa grup, yang memiliki lebih dari satu elemen Bagaimana cara menghapus baris duplikat yang tepat di SQL?Untuk menghapus baris duplikat dari tabel di SQL Server, ikuti langkah-langkah berikut. . Temukan baris duplikat menggunakan klausa GROUP BY atau fungsi ROW_NUMBER() Gunakan pernyataan DELETE untuk menghapus baris duplikat |