GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Menghapus Baris Duplikat di MySQL

Pendahuluan

Ada beberapa contoh di mana Anda mungkin menemukan baris duplikat di database MySQL Anda. Panduan ini akan memandu Anda melalui proses cara menghapus nilai baris duplikat di MySQL.

Prasyarat

  • Sistem dengan MySQL terinstal
  • Akun pengguna root MySQL
  • Akses ke jendela terminal / baris perintah (Ctrl-Alt-T, Cari> Terminal)

Menyiapkan Basis Data Pengujian

Jika Anda sudah memiliki database MySQL untuk dikerjakan, lanjutkan ke bagian berikutnya.

Jika tidak, buka jendela terminal dan ketik berikut ini:

mysql –u root –p

Saat diminta, masukkan root kata sandi untuk instalasi MySQL Anda. Jika Anda memiliki akun pengguna tertentu, gunakan kredensial tersebut alih-alih root.

Prompt sistem akan berubah menjadi:

mysql>

Buat Basis Data Pengujian

Anda dapat membuat tabel baru di database yang sudah ada. Untuk melakukannya, temukan database yang sesuai dengan mendaftar semua instance yang ada dengan:

SHOW DATABASES;

Atau, Anda dapat membuat database baru dengan memasukkan perintah berikut:

CREATE DATABASE IF NOT EXISTS testdata;

Untuk mulai bekerja di testdata new baru Anda penggunaan basis data:

USE testdata;

Tambahkan Tabel dan Data

Setelah di database, tambahkan tabel dengan data di bawah ini menggunakan perintah berikut:

CREATE TABLE dates (
id INT PRIMARY KEY AUTO_INCREMENT,
day VARCHAR(2) NOT NULL,
month VARCHAR(10) NOT NULL,
year VARCHAR(4) NOT NULL

);

INSERT INTO dates (day,month,year)
VALUES (’29’,’January’,’2011’),
(’30’,’January’,’2011’),
(’30’,’January’,’2011’),
(’14’,’February,’2017’),
(’14’,’February,’2018’),
(‘23’,’March’,’2018’),
(‘23’,’March’,’2018’),
(‘23’,’March’,’2019’),
(‘29’,’October’,’2019’),
(‘29’,’November’,’2019’),
(‘12’,’November’,’2017’),
(‘17’,’August’,’2018’),
(‘05’,’June’,’2016’);

Menampilkan Isi Tabel Tanggal

Untuk melihat tampilan semua tanggal yang Anda masukkan, diurutkan berdasarkan tahun, ketik:

SELECT * FROM dates ORDER BY year;


Outputnya akan menampilkan daftar tanggal dalam urutan yang sesuai.

Tampilkan Baris Duplikat

Untuk mengetahui apakah ada baris duplikat dalam database pengujian, gunakan perintah:

SELECT
     day, COUNT(day),
     month, COUNT(month),
     year, COUNT(year)
FROM 
     dates
GROUP BY
     day,
     month,
     year
HAVING 
     COUNT(day) > 1
     AND COUNT(month) > 1
     AND COUNT(year) > 1;

Sistem akan menampilkan nilai yang merupakan duplikat. Dalam hal ini, Anda akan melihat:

Format ini berfungsi untuk memilih beberapa kolom. Jika Anda memiliki kolom dengan pengenal unik, seperti alamat email pada daftar kontak atau kolom tanggal tunggal, Anda cukup memilih dari satu kolom tersebut.

Menghapus Baris Duplikat

Sebelum menggunakan salah satu metode yang disebutkan di bawah ini, ingatlah bahwa Anda harus bekerja di database yang sudah ada. Kami akan menggunakan database sampel kami:

USE testdata;

Opsi 1:Hapus Baris Duplikat Menggunakan INNER JOIN

Untuk menghapus baris duplikat di tabel MySQL pengujian kami, gunakan MySQL JOINS dan masukkan berikut ini:

delete t1 FROM dates t1
INNER  JOIN dates t2
WHERE
    t1.id < t2.id AND
    t1.day = t2.day AND
    t1.month = t2.month AND
    t1.year = t2.year;

Anda juga dapat menggunakan perintah dari Display Duplicate Baris untuk memverifikasi penghapusan.

Opsi 2:Hapus Baris Duplikat Menggunakan Tabel Perantara

Anda dapat membuat tabel perantara dan menggunakannya untuk menghapus baris duplikat. Ini dilakukan dengan hanya mentransfer baris unik ke tabel yang baru dibuat dan menghapus yang asli (dengan baris duplikat yang tersisa).

Untuk melakukannya, ikuti petunjuk di bawah ini.

1. Buat tabel perantara yang memiliki struktur yang sama dengan tabel sumber dan pindahkan baris unik yang ditemukan di sumber:

CREATE TABLE [copy_of_source] SELECT DISTINCT [columns] FROM [source_table];

Misalnya, untuk membuat salinan struktur tabel contoh dates perintahnya adalah:

CREATE TABLE copy_of_dates SELECT DISTINCT id, day, month, year FROM dates;

2. Setelah itu selesai, Anda dapat menghapus tabel sumber dengan perintah drop dan mengganti nama yang baru:

DROP TABLE [source_table];
ALTER TABLE [copy_of_source] RENAME TO [source_table];

Misalnya:

DROP TABLE dates;
ALTER TABLE copy_of_dates RENAME TO dates;

Opsi 3:Hapus Baris Duplikat Menggunakan ROW_NUMBER()

Penting: Metode ini hanya tersedia untuk MySQL versi 8.02 dan nanti. Periksa versi MySQL sebelum mencoba metode ini.

Cara lain untuk menghapus baris duplikat adalah dengan ROW_NUMBER() fungsi.

SELECT *. ROW_NUMBER () Over (PARTITION BY [column] ORDER BY [column]) as [row_number_name];

Oleh karena itu, perintah untuk tabel contoh kita adalah:

SELECT *. ROW_NUMBER () Over (PARTITION BY id ORDER BY id) as row_number;

Hasilnya menyertakan nomor_baris kolom. Data dipartisi dengan id dan di dalam setiap partisi ada nomor baris yang unik. Nilai unik diberi label dengan nomor baris 1 , sedangkan duplikatnya 2 , 3 , dan seterusnya.

Oleh karena itu, untuk menghapus baris duplikat, Anda perlu menghapus semuanya kecuali yang bertanda 1. Ini dilakukan dengan menjalankan DELETE kueri dengan row_number sebagai filter.

Untuk menghapus baris duplikat, jalankan:

DELETE FROM [table_name] WHERE row_number > 1;

Dalam contoh kami tanggal tabel, perintahnya adalah:

DELETE FROM dates WHERE row_number > 1;

Outputnya akan memberi tahu Anda berapa banyak baris yang terpengaruh, yaitu, berapa banyak baris duplikat yang telah dihapus.

Anda dapat memverifikasi tidak ada baris duplikat dengan menjalankan:

SELECT * FROM [table_name];

Misalnya:

SELECT * FROM dates;

Cent OS
  1. Bagaimana Mengubah Susunan Database MySQL?

  2. Cara menyalin database MySQL

  3. Cara Menginstal Server Database MySQL di CentOS

  1. Cara Menginstal Server Database MySQL 8 di CentOS 8

  2. Cara Memperbaiki Tabel Database Mysql yang Rusak

  3. Bagaimana menghubungkan jarak jauh ke MySQL

  1. Cara Mencadangkan &Memulihkan Basis Data MySQL

  2. Cara Menginstal MySQL 8.0 di CentOS/RHEL 8

  3. Cara Membuat Database MySQL Di cPanel