Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

hapus baris duplikat dari Oracle

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bergabunglah dengan Forum Tanya Jawab untuk Pengembang

  2. contoh sintaks bergabung dengan oracle

  3. Bagaimana cara membuat id dengan AUTO_INCREMENT di Oracle?

  4. Oracle:beberapa pembaruan tabel => ORA-01779:tidak dapat mengubah kolom yang dipetakan ke tabel yang tidak diawetkan kunci

  5. Mengapa saya tidak bisa melakukan a dengan x sebagai (...) dengan ADODB dan Oracle?