无法创建唯一索引 - 声明具有重复值,但它没有

mic*_*huk 4 sql postgresql indexing

我正在尝试在代码字段上创建一个唯一索引:

$ 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.
Run Code Online (Sandbox Code Playgroud)

它说有重复的值但是:

$ select code, count(*) from core_person group by code having count(*)>2;
code | count 
-----------+-------
(0 rows)
Run Code Online (Sandbox Code Playgroud)
  • 这证明没有.

WTF?

OMG*_*ies 10

这个:

HAVING COUNT(*) > 2
Run Code Online (Sandbox Code Playgroud)

......意味着需要重复3次以上.你想用:

HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)

...找到2+重复的记录.