Kita sering perlu menemukan dan menghapus baris duplikat dari tabel oracle karena berbagai alasan di database. Kami perlu sering menghapus untuk menghapus masalah data. Ada banyak cara untuk oracle menghapus baris duplikat tetapi tetap asli. Saya akan menunjukkan beberapa metode yang lebih cepat untuk mencapainya dalam posting ini. Saya akan menunjukkan metode di mana rowid digunakan dan metode di mana rowid tidak digunakan. Harap perhatikan bahwa Anda harus mengidentifikasi semua kolom yang membuat baris menjadi duplikat dalam tabel dan menentukan semua kolom tersebut dalam pernyataan hapus yang sesuai di SQL
Cara menghapus baris duplikat dari Oracle
Berikut adalah beberapa cara untuk menghapus baris duplikat dengan cara yang mudah
(A) Metode cepat tetapi Anda perlu membuat ulang semua indeks, pemicu,
create table my_table1 as select distinct * from my_table; drop my_table; rename my_table1 to my_table;
Contoh
SQL> select * from mytest;ID NAME
------1 TST
2 TST
1 TST
SQL> create table mytest1 as select distinct * from mytest; Table created. SQL> select * from mytest1;ID NAME
-------2 TST
1 TST
SQL> drop table mytest; Table dropped. SQL> rename mytest1 to mytest; Table renamed. SQL> select * from mytest;ID NAME
-------2 TST
1 TST
(B) Bagaimana menemukan dan menghapus catatan duplikat di oracle menggunakan rowid. Contoh di bawah ini menunjukkan satu kolom. Jika Anda menghapus berdasarkan dua kolom, Anda dapat menentukan dua kolom
Delete from my_table where rowid not in ( select max(rowid) from my_table group by my_col_name );
(C) Gunakan oracle self-join untuk menghapus baris duplikat
DELETE FROM my_table A WHERE ROWID > (SELECT min(rowid) FROM my_table B WHERE A.key_values = B.key_values);
(D) Gunakan klausa yang ada
delete from my_table t1 where exists (select 'x' from my_table t2 where t2.key_value1 = t1.key_value1 and t2.key_value2 = t1.key_value2 and t2.rowid > t1.rowid);
(E) menghapus catatan duplikat dalam menggunakan fungsi analitik oracle
delete from my_table where rowid in (select rid from ( select rowid rid, row_number() over (partition by column_name order by rowid) rn from my_table) where rn <> 1 )
Jadi seperti yang ditunjukkan, ada banyak cara untuk menghapus baris duplikat dalam tabel. Perintah ini dapat berguna dalam banyak situasi dan dapat digunakan tergantung pada kebutuhan. Harap selalu pastikan bahwa kami memiliki cadangan yang tersedia sebelum menjalankan pernyataan apa pun. Kita juga harus menemukan duplikat terlebih dahulu menggunakan kueri, lalu memverifikasinya sebelum melakukan
cara menemukan catatan duplikat di oracle menggunakan rowid
select * from my_table
where rowid not in
(select max(rowid) from my_table group by column_name);
Jadi Pertama-tama temukan duplikat menggunakan kueri di atas, lalu hapus dan jumlah penghapusan harus sama dengan jumlah baris kueri di atas.Sekarang jalankan kueri temukan duplikat lagi.Jika tidak ada duplikat maka kita baik untuk melakukan
Silakan lihat artikel di bawah ini untuk menyelami Sql
Tutorial Oracle Sql :Berisi daftar semua artikel Oracle sql yang berguna. Jelajahi mereka untuk mempelajari tentang Oracle Sql bahkan jika Anda tahu Oracle Sql
Pertanyaan wawancara Oracle:Lihat halaman ini untuk 49 Pertanyaan dan jawaban Wawancara Oracle Teratas:Dasar-dasar, Oracle SQL untuk membantu Anda dalam wawancara. Materi tambahan juga disediakan
klausa di mana di Oracle :Membatasi kumpulan data, di mana klausa, di mana klausa dalam pernyataan sql, operator perbandingan
fungsi baris tunggal di Oracle :Lihat ini untuk mengetahui fungsi baris tunggal di sql,Data Oracle fungsi,Fungsi numerik dalam sql,Fungsi karakter dalam sql
kueri oracle sql
blog.oracle.com