-
[SQL] SELECT 결과 UPDATEDB 2016. 11. 18. 13:11
select 결과를 update하는 방법은 여러가지가 존재합니다.
Set Subquery
set 절에 subquery로 쿼리 결과를 update할 수 있습니다. 이 방법의 단점은 쿼리 결과가 0~1개 일때만 유효합니다. 만약 쿼리 결과가 1개 이상 나올 경우 에러가 납니다.
UPDATE [테이블명] SET (컬럼, 컬럼1, ...) = (값, 값1, ... ) [WHERE conditions];
-- 예시
update test set (pk, id, name) = (select pk, id, name from test1 where pk = 1) -- 만약 해당 서브쿼리의 조회결과 갯수가 2개 이상일 시 에러From Subquery
이 방법은 from절에 subquery를 넣어 사용하는 방법입니다. set절에 subquery를 사용하는 것과는 다르게 쿼리결과가 2개 이상나와도 업데이트를 할 수 있습니다. 단 업데이트를 해야하는 컬럼은 set절에 전부 명시해야합니다.(귀찮)
update [테이블명] set [업데이트할 컬럼] = [업데이트 값] from [테이블명] where [조건] --예시 update test set count = test.count + a.count from (select * from test1) as a where test.pk = a.pk -- test테이블 내 pk와 test1 테이블 내 pk 가 같은 데이터에만 count를 추가해줌 -- 조인도 가능