Bagaimana cara menghapus hasil duplikat di mysql?

Dalam tutorial ini, kita akan belajar cara menghapus baris duplikat di database MySQL untuk mengurangi ukuran database dan membantu meningkatkan kinerja server.

Sebelum melanjutkan, kami berasumsi

  1. Anda telah menginstal dan menjalankan MySQL di sistem Anda
  2. Anda memiliki akses root ke database
  3. Anda memiliki akses ke database untuk percobaan atau pengujian

CATATAN. Jika Anda memerlukan database sampel untuk mencoba konsep yang disediakan dalam panduan ini, silakan pertimbangkan database Sakila atau unduh salinan database yang digunakan dalam panduan ini

Sumber daya disediakan di bawah ini

Penggunaan Dasar

Sebelum kita mulai, kita akan sengaja membuat tabel yang berisi nilai duplikat untuk tujuan pengujian. Kueri SQL untuk melakukan tindakan ini ada di bawah

GUNAKAN dunia;
DROP TABLE JIKA ADA pengguna;
CREATE TABLE users (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, username VARCHAR(10) NOT NULL, full_name VARCHAR(20), email VARCHAR(255) NOT NULL);
MASUKKAN KE pengguna (nama pengguna, nama_lengkap, email) NILAI
("perawan", "Claude M. Mori", "claude@gmail. com"),
("pulsa", "Tiffany G. Bailey", "tiffany. g@hotmail. com"),
("roket", "Christopher S. Payton", "chris. p@llc. io"),
("materi gelap", "Patricia J. Fox", "foxg@yahoo. com"),
("pwnc", "Faye H. Hartley", "hartley@outlook. com"),
("materi gelap", "Patricia J. Fox", "foxg@yahoo. com"),
("roket", "Christopher S. Payton", "chris. p@llc. io"),
("artemis", "Wesley C. Dillard", "Wes@dillard. org");

Jangan ragu untuk mengubah kueri di atas agar sesuai dengan kebutuhan Anda. Anda juga harus memastikan bahwa Anda telah membuat database (dunia) untuk menghindari kesalahan

Sekarang, jika kita mendapatkan semua data di dalam tabel dan diurutkan berdasarkan nama pengguna, kita akan melihat duplikat yang kita miliki seperti yang ditunjukkan

mysql> gunakan dunia;
Basis data berubah
mysql> SELECT * FROM users ORDER BY username;
+----+------------+-----------------------+-------
pengenal. nama belakang. nama lengkap. surel
+----+------------+-----------------------+-------
8. artemis. Wesley C. Dillard. Wes@dillard. org
4. materi gelap. Patricia J. Rubah. foxg@yahoo. com
6. materi gelap. Patricia J. Rubah. foxg@yahoo. com
2. pulsa. Tiffany G. Kebun istana. tiffany. g@hotmail. com
5. pwnc. Faye H. Hartley. hartley@outlook. com
3. roket. Christopher S. Payton. kris. p@llc. io
7. roket. Christopher S. Payton. kris. p@llc. io
1. Virgo. Claude M. Mori. claude@gmail. com
+----+------------+-----------------------+-------

Seperti yang Anda lihat dari tabel di atas, kami memiliki dua nilai duplikat yang membuat database lebih besar tanpa alasan dan menyebabkan kecepatan lambat

Mari kita pelajari bagaimana kita dapat menghapus nilai-nilai ini

#1 – HAPUS GABUNG

Salah satu cara untuk menghapus baris duplikat dalam database adalah dengan menggunakan pernyataan MySQL DELETE JOIN. Kueri, bagaimanapun, menggunakan id untuk menghapus nilai duplikat

Misalnya, untuk menghapus nilai duplikat pada tabel pengguna di atas, kita dapat menginput

DELETE  table1 FROM users table1 INNER JOIN users table2 WHERE table1. id < tabel2. id DAN tabel1. email = tabel2. surel;

Setelah Anda menjalankan kueri di atas, Anda akan menghapus nilai duplikat seperti yang ditunjukkan pada output di bawah ini

mysql> DELETE table1 FROM users table1 INNER JOIN users table2 WHERE table1. id < tabel2. id DAN tabel1. email = tabel2. surel;
Kueri Oke, 2 baris terpengaruh (0. 01 detik)
 
mysql> SELECT * FROM users ORDER BY username;
+----+------------+-----------------------+-------
pengenal. nama belakang. nama lengkap. surel
+----+------------+-----------------------+-------
8. artemis. Wesley C. Dillard. Wes@dillard. org
6. materi gelap. Patricia J. Rubah. foxg@yahoo. com
2. pulsa. Tiffany G. Kebun istana. tiffany. g@hotmail. com
5. pwnc. Faye H. Hartley. hartley@outlook. com
7. roket. Christopher S. Payton. kris. p@llc. io
1. Virgo. Claude M. Mori. claude@gmail. com
+----+------------+-----------------------+-------

#2 – Fungsi Row_Number()

Metode kedua yang bisa kita implementasikan adalah dengan menggunakan fungsi MySQL row_number(). Fungsi ini didukung di MySQL versi 8 dan lebih tinggi

Ini bekerja dengan menetapkan nilai int berurutan ke setiap baris, dengan baris yang berisi nilai duplikat mendapatkan nilai lebih tinggi dari 1

Untuk mempelajari lebih lanjut tentang fungsi ini, gunakan sumber daya yang disediakan di bawah ini

Pertimbangkan kueri di bawah ini yang mengembalikan id baris dengan nilai duplikat

SELECT id FROM (SELECT id, ROW_NUMBER() OVER (PARTITION BY username ORDER BY username) AS row_var FROM users) t1 WHERE row_var > 1;

Setelah Anda menjalankan kueri di atas, Anda harus mendapatkan daftar id seperti yang ditunjukkan pada output di bawah ini

+----+
pengenal
+----+
6
7
+----+
2 baris dalam set (0. 01 detik)

Jika Anda ingin menghapus nilai, cukup ganti pernyataan SELECT dengan pernyataan DELETE seperti yang ditunjukkan di bawah ini

HAPUS DARI pengguna WHERE id IN (PILIH id FROM ( SELECT id, ROW_NUMBER() OVER (PARTITION BY username ORDER BY username) AS row_var FROM users) t1 WHERE row_var > 1);

Terakhir, Anda dapat memverifikasi bahwa nilai duplikat dihapus menggunakan pernyataan SELECT

mysql> SELECT * from users ORDER BY username;
+----+------------+-----------------------+-------
pengenal. nama belakang. nama lengkap. surel
+----+------------+-----------------------+-------
8. artemis. Wesley C. Dillard. Wes@dillard. org
4. materi gelap. Patricia J. Rubah. foxg@yahoo. com
2. pulsa. Tiffany G. Kebun istana. tiffany. g@hotmail. com
5. pwnc. Faye H. Hartley. hartley@outlook. com
3. roket. Christopher S. Payton. kris. p@llc. io
1. Virgo. Claude M. Mori. claude@gmail. com
+----+------------+-----------------------+-------

Kesimpulan

Dalam tutorial ini, kita membahas dua metode untuk menghapus nilai duplikat dari database. Database besar, terutama yang umum digunakan, mungkin berisi banyak nilai duplikat dari impor eksternal dan kesalahan lainnya. Oleh karena itu, ada kebutuhan untuk terus membersihkan nilai duplikat untuk memastikan aplikasi bekerja secara optimal

Bagaimana cara menghapus duplikat dari hasil kueri?

Hapus baris duplikat .
Untuk membuka kueri, temukan kueri yang sebelumnya dimuat dari Editor Power Query, pilih sel dalam data, lalu pilih kueri > Edit. Untuk informasi selengkapnya, lihat Membuat, memuat, atau mengedit kueri di Excel
Pilih kolom dengan mengklik tajuk kolom. .
Pilih Beranda > Hapus Baris > Hapus Duplikat

Bagaimana cara mengembalikan hanya hasil unik di MySQL?

Kita dapat menggunakan klausa MySQL DISTINCT untuk mengembalikan satu bidang yang menghapus duplikat dari kumpulan hasil. Misalnya. PILIH status BERBEDA DARI pelanggan; .