안녕하세요?
update 문 관련해서 좀 이상한 점이 있어서 질문드립니다.
update tbl_detail a
set a.indi_status = (select b.indi_status from tbl_ppl b where b.jumin_no = a.jumin_no)
tbl_ppl 은 jumin_no(주민번호) 를 키로 해서 status (상태값) , 단 두개로만 만들어져 있습니다.
tbl_detail 테이블의 status (상태값) 업데이트를 위해 임시로 주민번호와 상태값 두개만으로 데이터를 만들었습니다.
status 값은 a, b, c 딱 세개로만 구성되어있고 null 은 존재하지 않습니다.
tbl_detail 테이블은 시도, 시군구, 주민번호, 상태값 이렇게 네개로 구성되어있고 각 시도/시군구별로 주민번호
가 중복은 없으나 전체적으로 보면 한개 이상의 주민번호는 있는 상태입니다.
그런 상태에서 위 update 문을 실행했는데
업데이트된 tbl_detail 테이블의 status 값은 추출한 상태값 a, b, c 이 세가지를 벗어날수가 없는데 이상하게 null 이 들어
가 있습니다. 도데체 왜 이런 현상이 벌어지는지 모르겠습니다.
조언을 부탁드립니다.
감사합니다.
select 절로 update하라는 구문이기에 select절이 null 값이면 null로 업데이트 하겠죠.
select * from tbl_detail a
where not exists (select 1 from tbl_ppl b where b.jumin_no = a.jumin_no)
이렇게 조회해보시면 해당 건들이 나올 것 같네요.
null로 update하면 안 된다면 이런 데이터 제외하고 업데이트하게 만들어야겠죠.
update tbl_detail a
set a.indi_status = (select b.indi_status from tbl_ppl b where b.jumin_no = a.jumin_no)
where exists (select 1 from tbl_ppl b where b.jumin_no = a.jumin_no)
아니면 해당 건들에 대해 다른 조치를 하시든지요.