Mudah mencari data yang duplicate dengan SQL
Mudah mencari data yang duplicate dengan SQL
Membuat validasi adalah penting untuk memastikan data yang disimpan sesuai harapan. Ada yang melakukan validasi dari sisi aplikasi sebelum akhirnya dimasukan ke database. Atau, ada juga yang dilakukan dari sisi database, yaitu dengan memdefinisikannya langsung saat membuat tabel. Umpanya, kita akan membuat tabel employee dengan definisi sebagai berikut:
- ID harus unique.
- Nama tidak boleh kosong
- dan lain sebagainya.
Namun, kadang-kadang kita lupa untuk melakukan hal itu sehingga banyak data-data yang tidak diharapkan masuk, umpanya terjadi banyak duplikasi. Akibatnya, aplikasi akan error atau menghasilkan informasi yang tidak sesuai.
Salah satu untuk mengetahui data yang duplicate adalah dengan menampilkan semua data lalu membandingkannya satu persatu. Contoh, kita tampilkan semua data employee dengan mengetikan perintah berikut:
1
| SELECT * FROM employee |
Lalu kita perhatikan isi tabel tersebut kemudian bandingkan satu-persatu. Jika kita punya data employee yang jumlah 20, mungkin cara seperti itu cukup. Tapi, jika jumlah data lebih dari 100 atau 1000 tentu cara seperti itu tidak efektif. Selain banyak memakan waktu, peluang salah hitung kemungkinan besar.
Cara lain adalah dengan menggunakan SQL seperti ini:
1
2
3
4
| SELECT employee_id, COUNT (employee_id) AS count FROM hr_employee GROUP BY employee_id HAVING COUNT (employee_id) > 1; |
Query tersebut akan menghasilkan informasi seperti ini:
employee_id | count |
---|---|
2362 | 2 |
2361 | 2 |
2399 | 2 |
2360 | 2 |
SQL diatas dapat kita gunakan untuk membantu memperbaiki data-data yang duplicate. Kenapa ? bukankah SQL di atas hanya menampilkan data yang duplicate ? betul, SQL tersebut sama sekali tidak melakukan update data. Tetapi, bukankah sebelum melakukan update data terlebih dahulu kita harus tahu data yang diakan di-update ?
SELECT KD_TOKO, COUNT(*) duplikat FROM AREA GROUP BY KD_TOKO HAVING duplikat > 1
===
SELECT username, COUNT(*) duplikat FROM users GROUP BY username HAVING COUNT(duplikat) > 1
===
SELECT
first_name, COUNT(first_name),
last_name, COUNT(last_name),
email, COUNT(email)
FROM
users
GROUP BY
first_name ,
last_name ,
HAVING COUNT(first_name) > 1
AND COUNT(last_name) > 1
AND COUNT(email) > 1;
===
Komentar
Posting Komentar