2011-01-18 2 views
4

Я пытаюсь создать уникальный индекс на поле кода:Не удалось создать уникальный индекс - претензии имеют одинаковые значения, но это не

$ CREATE UNIQUE INDEX "one_code_per_person" on "core_person"("code") WHERE "code" IS NOT NULL; 
ERROR: could not create unique index "one_code_per_person" 
DETAIL: Table contains duplicated values. 

Он говорит, что есть повторяющиеся значения, но:

$ select code, count(*) from core_person group by code having count(*)>2; 
code | count 
-----------+------- 
(0 rows) 
  • который доказывает, что нет.

WTF?

+3

На самом деле, count (*)> 1 будет условием, необходимым для тестирования. –

ответ

10

Это:

HAVING COUNT(*) > 2 

... означает, что там должно быть 3 + дубликатами. Вы хотите использовать:

HAVING COUNT(*) > 1 

... найти записи с дубликатами 2+.

+0

как абсолютно глупо я невероятно - спасибо :) – michuk

Смежные вопросы