A.C1 컬럼이 NULL 인대상만 업데이트하고 싶어 두개 테이블을 조인했습니다.
두개 쿼리문 동일한 결과값아닌가요?? A.C1 IS NULL 조건을 밖으로 뺴나 안으로 하나 같지 않나요??
UPDATE ATB A
SET A.C1 = (SELECT B.C2 FROM BTB B WHERE A.SN = B.SN
and A.C1 IS NULL)
UPDATE ATB A
SET A.C1 = (SELECT B.C2 FROM BTB B WHERE A.SN = B.SN
) WHERE A.C1 IS NULL
UPDATE 테이블 SET 컬럼 = (업데이트 할 값) WHERE (업데이트 대상을 한정 지을 조건) ;
업데이트 할 값을 추출하는 조건과
업데이트 할 대상을 한정 지을 조건은 다르죠.
조건을 빼면 전체 대상 업데이트입니다.
업데이트 하기 전 동일한 SELECT 문을 먼저 수행해서 결과를 확인해야 합니다.
SELECT a.sn , a.c1 , (SELECT b.c2 FROM btb b WHERE a.sn = b.sn) c2 FROM atb a WHERE a.c1 IS NULL ;
a 의 자료는 항상 b 에 존재한다면? IS NULL 조건으로도 충분하지만
b 에 해당 자료가 없을 수도 있다면? 다음 조건이 추가되어야 할 수 도 있습니다.
SELECT a.sn , a.c1 , (SELECT b.c2 FROM btb b WHERE a.sn = b.sn) c2 FROM atb a WHERE a.c1 IS NULL AND EXISTS (SELECT 1 FROM btb b WHERE a.sn = b.sn) ;