2011-01-18 2 views
4

Je suis en train de créer un index unique sur le champ de code:Impossible de créer un index unique - prétend avoir des valeurs en double mais il n'a pas

$ 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. 

Il dit qu'il ya des doublons, mais:

$ select code, count(*) from core_person group by code having count(*)>2; 
code | count 
-----------+------- 
(0 rows) 
  • ce qui prouve qu'il n'y en a pas.

WTF?

+3

En fait, count (*)> 1 est la condition que vous devez tester. –

Répondre

10

Ce:

HAVING COUNT(*) > 2 

... signifie qu'il doit y avoir des doublons 3+. Vous voulez utiliser:

HAVING COUNT(*) > 1 

... pour trouver des enregistrements avec 2+ doublons.

+0

comment totalement stupide que je suis est incroyable - merci :) – michuk

Questions connexes