Oracle
 sql >> база данни >  >> RDS >> Oracle

преглед на всички данни за дублиращи се редове в oracle

Винаги можете да използвате GROUP BY / HAVING заявка в клауза IN. Това работи и е относително лесно, но може да не е особено ефективно, ако броят на дублиращите се редове е относително голям.

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

Като цяло би било по-ефективно да се използват аналитични функции, за да се избегне удар на масата втори път.

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

В зависимост от това какво планирате да правите с данните и колко дубликати на определен ред може да има, може също да искате да се присъедините към table1 към себе си, за да получи данните в един ред

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. Как да избегнем две различни нишки да четат едни и същи редове от DB (Hibernate и Oracle 10g)

  2. Как мога да актуализирам колона от вложена таблица в pl/sql?

  3. Прикачени файлове в Oracle Applications R12

  4. Управлявайте парола и ресурси в Oracle с помощта на профил

  5. Oracle SQL:Как да върнете няколко отделни колони