2016-06-23 3 views
0

두 개의 테이블 A, B가 있습니다. A에는 두 개의 A1 및 A2 열이 있습니다. B에는 두 개의 열 B1 및 B2가 있습니다. 내 경우에는 A2와 B2의 값 중 일부는 같기 때문에 A1 = B1을 업데이트하려고합니다. 따라서 A1은 A2 = B2 일 때 B1에서 값을 가져야합니다. 다음 쿼리를 작성했지만 테이블 A의 모든 값이 NULL이됩니다. 누구든지이 문제를 해결할 수 있습니까?SQL 두 테이블을 비교하고 그 중 하나를 업데이트하십시오.

Update A 
SET A.A1 = (Select B1 from B Where A.A2 = B.B2) 
당신은 기록을 갱신해야하는 식별하기 INNER JOIN를 사용할 수
+0

일치하는 행이 없으면 내부 'SELECT'는'A.A1'을 (를) NULL로 업데이트합니다. –

+0

일치하는 행이 있습니다. A2의 많은 값은 B2 – Kazmi

+0

예와 같지만 일치하지 않는 값은 'NULL'로 설정됩니다. Tim의 대답으로'JOIN'을 사용하십시오. –

답변

6

:

UPDATE A 
SET A.A1 = B.B1 
FROM A 
INNER JOIN B 
    ON A.A2 = B.B2 

이 방법의 좋은 점은 논리적으로 업데이트받을 수있는 유일한 기록은 INNER JOIN 살아남을 사람 있음 .

+0

Tim이 일했습니다. 고맙습니다. 나는 SQL에 익숙하지 않다. 귀하의 도움을 주시면 감사하겠습니다. 다시 한 번 감사드립니다. – Kazmi

1

Tim Biegeleisen의 내부 조인 접근 방식을 좋아합니다. 그러나, 나는 또한 SELECT를 먼저 발행하여 테스트 할 때 이것을 사용할 것이다.

select 
    a.ai 
, b.bi 
, a.a2 
, b.b2 
from a inner join b 
on a.a2 = b.b2 

는 새 값 (COL2)와 (COL1)를 업데이트하는 값이 3, 4 열에 대해 올바른지 확인하기 위해 검사합니다.

관련 문제