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

lihat semua data untuk baris duplikat di Oracle

Anda selalu dapat menggunakan GROUP BY / HAVING query dalam klausa IN. Ini berfungsi dan relatif mudah tetapi mungkin tidak terlalu efisien jika jumlah baris duplikat relatif besar.

SELECT *
  FROM table1
 WHERE (name, type_id) IN (SELECT name, type_id
                             FROM table1
                            GROUP BY name, type_id
                           HAVING COUNT(*) > 1)

Umumnya akan lebih efisien untuk menggunakan fungsi analitik untuk menghindari memukul meja untuk kedua kalinya.

SELECT *
  FROM (SELECT id, 
               name,
               type_id,
               code,
               lat,
               long,
               count(*) over (partition by name, type_id) cnt
          FROM table1)
 WHERE cnt > 1

Bergantung pada apa yang Anda rencanakan untuk dilakukan dengan data dan berapa banyak duplikat dari baris tertentu yang mungkin ada, Anda mungkin juga ingin bergabung dengan table1 ke dirinya sendiri untuk mendapatkan data dalam satu baris

SELECT a.name,
       a.type_id,
       a.id,
       b.id,
       a.code,
       b.code,
       a.lat,
       b.lat,
       a.long,
       b.long
  FROM table1 a
       JOIN table1 b ON (a.name = b.name AND
                         a.type_id = b.type_id AND
                         a.rowid > b.rowid)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. periode batas waktu berlalu. semua koneksi yang dikumpulkan sedang digunakan dan ukuran kumpulan maksimum tercapai

  2. SQLException:ORA-06550 saat memanggil fungsi PL/SQL dari Java

  3. Kesalahan instalasi Oracle 12c Ubuntu 17.04

  4. REGEXP_COUNT mengabaikan sensitivitas huruf besar

  5. Permintaan di Oracle untuk menjalankan sum