다소 복잡한 쿼리를 실행하려고합니다. 두 개의 테이블이 동기화되지 않았습니다. 처리의 한 단계에서 16 자리 값이 한 테이블에서 다른 테이블로 복사되고 단지 10 자리로 잘립니다.하나의 테이블에 여러 행을 같게 여러 개의 열 값을 기준으로 다른 테이블의 여러 행을 설정하는 것
전체 16 자리 숫자를 복사하는 데 몇 가지 정보를 사용하고 있습니다. 10 자리 값이 16 자리 값의 처음 10 자리와 일치하는 곳이면 어디든 찾아야하고이 두 테이블의 다른 세 가지 정보가 일치합니다. 결합하면, 우리는 거의 100 % 확신 할 수 있습니다. 이것은 내 쿼리의 현재 반복입니다.
UPDATE DB1.TABLE1
SET ID =
(
SELECT b.ID
FROM DB2.TABLE1 b
INNER DB1.TABLE1 a
ON left(b.ID, 10) = a.ID
WHERE len(a.ID) = 10
AND a.STORE = b.STORE
AND a.DOCTYPE = b.DOCTYPE
AND a.DOCDATE = b.DOCDATE
)
문제는, 하위 쿼리가 여러 결과를 반환하고 있다는 것입니다. 하지만 여러 결과를 원합니다. 괄호 뒤에 또 다른 WHERE
문을 추가하고 하위 쿼리의 마지막 네 줄을 복제했지만 작동하지 않습니다. 또한 WHERE EXISTS
을 사용하고 전체 SELECT
문을 복제하려고했지만 여러 결과 오류도 표시됩니다. 내가 여기서 무엇을 놓치고 있니?
:하지만,
은 무엇 당신이해야 할 것은 다음과 같이 업데이트 문의 일환으로 두 테이블의 상관 관계입니다 나는 혼란스러운 결과를 모두 얻고있다. 처음에는 테스트 데이터베이스에서 16 자리 숫자가 일치하는 새로운 올바른 상태의 행 2 개와 올바르지 않은 77 개의 행이 있습니다. 쿼리는 27 개의 행을 변경한다고 주장하지만 올바른 일치 상태에 79 개가 있습니다. 나는 아직도 이것을 연구하고 있지만, 그것이 화해되었다고 가정 할 때, 나는 정답으로 이것을 체크 할 것이다. 감사. –
다른 문제점으로 인해 DB2_TABLE1에 중복 항목이 추가되어 select 문에 대한 중복 반환이 발생했습니다. UPDATE 명령이 값을 변경하면 값을 변경하면 처음에 일치했던 항목을 "무시"하게됩니까? –
흠, 그게 흥미로운 질문입니다. 확실하지는 않지만 조인 기준에서도 사용되는 열을 업데이트하는 경우라면 그럴듯한 것으로 보입니다. – Chad