참고사항

한개의 컬럼을 대량으로 update 할 경우 : update 구문에 select 를 사용할 경우 in절대 금지


문제의 sql
update テーブルA A
set (A.所属,A.住所,A.電話番号)
= (select B.所属,B.住所,B.電話番号 from テーブルB B where A.ID = B.ID);
※문제점 : B의 테이블ID가 부족할 경우 NULL을 갱신하기 때문에 아래 처럼 조건을 추가한다.


수정 후 sql
update テーブルA A
set A.所属 = (select B.所属 from テーブルB B where A.ID = B.ID)
A.住所 = (select B.住所 from テーブルB B where A.ID = B.ID)
A.電話番号 = (select B.電話番号 from テーブルB B where A.ID = B.ID)
where A.ID = (select B.ID from テーブルB B where A.ID = B.ID);

좀 더 간결한 sql
update テーブルA A
set (A.所属,A.住所,A.電話番号)
= (select B.所属,B.住所,B.電話番号 from テーブルB B where A.ID = B.ID)
where exists (select 1 from テーブルB B where A.ID = B.ID);

+ Recent posts