Как проверить, все ли поля уникальны в Oracle? - PullRequest
8 голосов
/ 25 октября 2010

Привет, ребята, простой вопрос, но ничего не могу найти.

Спасибо

Ответы [ 3 ]

28 голосов
/ 25 октября 2010
SELECT myColumn, COUNT(*)
FROM myTable
GROUP BY myColumn
HAVING COUNT(*) > 1

Это вернет вам все значения myColumn вместе с номером их вхождения, если их число больше единицы (т.е. они не уникальны).

Если результат этого запроса пуст, в этом столбце есть уникальные значения.

2 голосов
/ 25 октября 2010

Простой способ сделать это - проанализировать таблицу с помощью DBMS_STATS.После этого вы можете посмотреть на dba_tables ... Посмотрите на столбец num_rows.Посмотрите на dab_tab_columns.Сравните num_distinct для каждого столбца с количеством строк.Это обходной способ сделать то, что вы хотите, не выполняя полное сканирование таблицы, если вы беспокоитесь о влиянии производственной системы на огромном столе.Если вы хотите получить прямые результаты, сделайте то, что предлагают другие, выполнив запрос к таблице с группой по.

1 голос
/ 25 октября 2010

Одним из способов является создание уникального индекса. если создание индекса завершится неудачно, у вас уже есть дублирующаяся информация, если вставка не удастся, она создаст дубликат ...

...