Oracle - проверка дубликатов в двух столбцах в одной таблице - PullRequest
0 голосов
/ 04 июля 2018

Я хочу найти дубликаты двух столбцов в одной таблице.

Пример набора данных следующий.

Column_1              Column_2

**15440100000220**  15440300002980

15440100000150  **15440100000220**

15440100000170  **15440300002160**

**15440300002160**  15440100006170

Как видите, у меня есть дубликаты в двух столбцах. Записи в первом столбце присутствуют во втором столбце, а записи во втором присутствуют в первом.

Я искал решение, но натолкнулся на примеры, сравнивающие дубликаты двух таблиц.

Есть ли способ получить эти дубликаты в запросе выбора? Если запись в столбце 2 присутствует в столбце 1, то эта запись в столбце 2 должна быть включена в запрос.

Ответы [ 4 ]

0 голосов
/ 04 июля 2018

Другой способ просто перечислить значения column_2, которые также появляются в column_1, заключается в использовании exists:

select column_2
from your_table yt
where exists (
  select null
  from your_table yt2
  where yt2.column_1 = yt.column_2
);

Я думаю, что цель этого более ясна, но вы должны проверить эффективность различных подходов.

0 голосов
/ 04 июля 2018

Вы можете самостоятельно присоединиться к столу:

SELECT t1.column_1 AS col1, t1.column_2 AS col2,
       t2.column_1 AS duplicate_col1, t2.column+2 AS duplicate_col2
FROM   mytable t1
JOIN   mytable t2 ON t1.column_1 = t2.column_2
0 голосов
/ 04 июля 2018

Вы просто хотите эти дублированные идентификаторы? Сделай сам присоединиться:

select distinct t1.column_1
from tablename t1
join tablename t2 on t1.column_1 = t2.column_2
0 голосов
/ 04 июля 2018

Вы можете использовать наличие на подвыборке объединения

select column_1, count(*) from (

  select column_1 as column_1
  from my_table  
  union all 
  select column_2
  from my_table  

) t 
group by column_1
having count(*) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...