Обнаружение дублированных реестров в Oracle - PullRequest
0 голосов
/ 08 сентября 2010

У меня есть таблица в Oracle, и я хочу выбрать все дублирующиеся значения, я имею в виду: я могу обнаружить, что регистр дублирован, потому что в некотором столбце есть такое же значение:

ColumnA  ColumnB
1        A
2        A
3        A
4        B

Я хочу получить что-то вроде:

1 A
1 A
1 A

Большое спасибо.

1 Ответ

2 голосов
/ 08 сентября 2010

Предполагая, что вы хотите, чтобы все строки из исходной таблицы имели несколько дубликатов в одном столбце (ColumnB), вы можете использовать следующий запрос:

SELECT ColumnA, ColumnB FROM Table
WHERE ColumnB IN (
    SELECT ColumnB FROM Table
    GROUP BY ColumnB HAVING COUNT(*) > 1 
)

Для ваших исходных данных будет возвращено:

ColumnA ColumnB
1       A
2       A
3       A

Если достаточно получить все значения, которые используются в таблице несколько раз, вы можете использовать более простой запрос:

SELECT ColumnB FROM Table
GROUP BY ColumnB HAVING COUNT(*) > 1 

Это вернет только одну строку с A.

...