Contoh berikut menghapus baris duplikat di MySQL sambil mengabaikan kunci utama atau kolom pengenal unik.
Contoh menghapus baris duplikat tetapi menyimpannya. Jadi dalam kasus dua baris yang identik, itu menghapus salah satunya dan menyimpan yang lain.
Contoh Data
Misalkan kita memiliki tabel dengan data berikut:
SELECT * FROM Dogs;
Hasil:
+---------+-------------+------------+ | DogId | FirstName | LastName | |---------+-------------+------------| | 1 | Bark | Smith | | 2 | Bark | Smith | | 3 | Woof | Jones | | 4 | Ruff | Robinson | | 5 | Wag | Johnson | | 6 | Wag | Johnson | | 7 | Wag | Johnson | +---------+-------------+------------+
Kita dapat melihat bahwa dua baris pertama adalah duplikat, dan tiga baris terakhir adalah duplikat.
Temukan Duplikatnya
Pertama, mari kita pilih check tabel kita untuk melihat berapa banyak baris yang duplikat:
SELECT
FirstName,
LastName,
COUNT(*) AS Count
FROM Dogs
GROUP BY FirstName, LastName
HAVING COUNT(*) > 1;
Hasil:
+-----------+----------+-------+ | FirstName | LastName | Count | +-----------+----------+-------+ | Bark | Smith | 2 | | Wag | Johnson | 3 | +-----------+----------+-------+
Kita dapat melihat bahwa ada dua baris dengan Bark Smith, dan tiga baris dengan Wag Johnson.
Kami akan menghilangkan penipuan pada tabel sehingga hanya berisi satu dari masing-masing tabel.
Hapus Duplikat
Menjalankan kode berikut menghilangkan penipuan tabel di atas:
DELETE d1 FROM Dogs d1
INNER JOIN Dogs d2
WHERE
d1.DogId < d2.DogId AND
d1.FirstName = d2.FirstName AND
d1.LastName = d2.LastName;
Hasil:
Query OK, 3 rows affected (0.00 sec)
Mari kita lihat hasilnya:
SELECT * FROM Dogs;
Hasil:
+-------+-----------+----------+ | DogId | FirstName | LastName | +-------+-----------+----------+ | 2 | Bark | Smith | | 3 | Woof | Jones | | 4 | Ruff | Robinson | | 7 | Wag | Johnson | +-------+-----------+----------+
Kami telah berhasil menghapus baris duplikat dari tabel.