2010-06-28 5 views
2

동일한 데이터가있는 서로 다른 두 개의 데이터베이스에 동일한 테이블이 두 개 있지만 기본 키가 다르므로 동일한 키를 갖도록 업데이트해야합니다. 테이블의 어느 것도 공통점은 어떤 키도 없었다 않고 중복다른 데이터베이스의 테이블에서 기본 키 업데이트

UPDATE db1.dbo.Table 
SET db1.dbo.Table.pcol = rightPcol.pcol 
FROM db1.dbo.Table 
JOIN db2.dbo.Table AS rightPcol ON db1.dbo.Table.2ndIdent = db2.dbo.Table.2ndIdent 

이 그러나 결과 "PRIMARY KEY 제약 조건의 위반. 개체에 중복 키를 삽입 할 수 없습니다"

을 where 절을 추가 할 때이 있었다 없다 db2 pcol에 존재하는 db1 pcol 값을 갱신하지 않으려면 아무것도 갱신하지 않았습니다. DB2가 아닌 db1의 기본 키로 업데이트하십시오.

모든 도움을 주시면 대단히 감사하겠습니다.

// 고정 사소한 맞춤법 오류 :

답변

3

말을 많이가없는 정직하게하려면 - 오류 메시지가 꽤 많이 잘못이 무엇인지에 대해 설명합니다.

PK 열을 이미있는 값으로 업데이트하려고합니다.

나는 당신이 어떤 중복 생성되지 않습니다 2ndIdent에 가입하여 확인하십시오

  1. 를 만들기 위해 한 번 확인합니다.
  2. 이 정말 DB1과 데이터에 문제가해야하므로

당신의 SQL이 잘 보이는 DB2의 테이블에있는 중복되지 않습니다.

Select 2ndIndent 
From Table 
Group By 2ndIdent 
Having Count(2ndIndent) > 1 
+0

분명히 2ndIdent는 수석 프로그래머가 당신을 위해 너무 많은 감사, 내가 아니라도이 보이지 만든있는이했다하더라도 그것에서 중복을했다 당신의 도움. – Joakim

0

은 "PCOL"는 기본 키 열은 다음과 같습니다

이 같은 것을 사용할 수 있습니다 중복 확인하려면?

"rightPcol"의 기본 키가 "db1"의 테이블에있는 모든 행과 중복되면 "기본 키 제약 조건 위반"이 발생합니다. 두 테이블에서 duplicatetion을 선택하고 충돌을 해결해야합니다 (reselove가 지정하지 않은 다른 것에 의존하는 방식).

그래서 첫 번째 선택해야 중복 :

SELECT T1.pcol 
FROM db1.dbo.Table.pcol AS T1 
INNER JOIN db2.dbo.Table.pcol AS T2 
    ON T1.pcol = T2.pcol 
+0

나는 이것을했지만 문제는 아니지만 Barry가 문제를 발견했습니다. 도움을 주셔서 감사합니다. – Joakim

관련 문제