요약
update tmp_table
set a = d
, b = e
, c = f
이렇게 하지 말고,
update tmp_table
set (a, b, c) = (d, e, f)
이렇게 하면 됩니다.
상세
여러개의 컬럼을 동시에 업데이트 해야하는 상황이 있습니다.
아래와 같은 직원테이블이 있는데,
부서와 전화번호를 바꿔달라는 요청이 들어오는 거죠.
바꿔달라는 내용입니다.
세명 모두 다른 부서에 다른 전화번호를 부여받았습니다.
이렇게 돼 있을때, 쿼리를 어떻게 작성해야 할까요?
기존에 제가 쓰던 쿼리는 이렇습니다.
update employees a
set phone = ( select phone
from modify_list b
where a.id = b.id
),
dept_nm = ( select dept_nm
from modify_list b
where a.id = b.id
)
where a.id in ( select id from modify_list)
각 컬럼별로 서브쿼리를 하나씩 돌려서 업데이트를 했습니다.
중복이 어마어마하지 않습니까?
아래와 같이 컬럼을 콤마(,)로 구분해서 적어주면
다중컬럼을 업데이트 할 수 있네요.
update employees a
set (phone, dept_nm) = ( select phone, dept_nm
from modify_list b
where a.id = b.id
)
where a.id in ( select id from modify_list)
하나라도 더 알면 손발이 편해지는것 같습니다.
'IT' 카테고리의 다른 글
[구글 애드센스] 티스토리 구글 광고 표시안되는 오류 처리 완료 TagError: adsbygoogle.push() error: Only one AdSense head tag supported per page. The second tag is ignored. (0) | 2020.02.03 |
---|---|
엑셀 업로드 오류 처리 방안org.apache.poi.hssf.record.RecordFormatException (0) | 2020.02.03 |
[Windows 10] 파일 확장자 표시 (0) | 2020.01.28 |
[Firefox] 파이어폭스 마우스 우클릭 해제방법 (1) | 2020.01.17 |
[mac]터미널에서 파일 및 디렉터리 퍼미션 부여( chmod 명령 ) (0) | 2020.01.15 |