update select 질문입니다. 예제를 적어놨는데 이해가 잘안되서요... 0 2 1,373

by 도와주십시요 ㅠ,ㅜ [2020.02.18 11:33:30]


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

by 마농 [2020.02.18 13:09:04]
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)
;

 


by 도와주십시요 ㅠ,ㅜ [2020.02.18 13:24:17]

매번 도움 주셔서 감사합니다. !!

고마워요~!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입