2014-09-11 3 views
-4

세 개의 열이있는 테이블이 있습니다. 카운터가 있으면 세 개의 열에 대해 unique index을 만들고 싶습니다.이 카운터는 중복 된 위치를 알려줍니다. 나는 또한 그들을 삭제하고 싶다. 카운터가있는 고유 인덱스

+0

을 ( product_no 정수, name_no 정수, 가격 정수 ); INSERT INTO 제품 (product_no, name_no, price) 값 (1, 3, 99), (2, 5, 199), (3, 6, 299), (3, 3, 1); select * 제품에서; 제품의 고유 색인 IND_name (product_no, name_no, price)을 작성하십시오. 와 나는 아무런 오류가 없지만 중복되었거나? – xandl1994

+0

음 : 고유 색인이있는 경우 중복을 가질 수 없습니다. 중복이있는 경우 고유 색인을 가질 수 없습니다. – joop

+0

모든 중복 값을 삭제하려고합니다. 테이블에있는 위치 – xandl1994

답변

1

은 정말 무엇인지 문제 모르겠지만, 당신이 당신의 postgre 데이터베이스에 중복을 삭제해야하는 경우이 시도 : 때때로 타임 스탬프 필드가 대신 ID 필드의 사용

DELETE FROM tablename 
    WHERE id IN (SELECT id 
      FROM (SELECT id, 
         row_number() over (partition BY column1, column2, column3 ORDER BY id) AS rnum 
       FROM tablename) t 
      WHERE t.rnum > 1); 

을 ". "

내 테이블에서 중복 된 항목을 삭제하는 데 도움이되었습니다.

당신은에서이 solutiona 찾을 수 있습니다

: TABLE 제품을 만들 http://wiki.postgresql.org/wiki/Deleting_duplicates