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를 추가해줌
-- 조인도 가능


'DB' 카테고리의 다른 글

[DB] 트랜잭션, REDO와 UNDO 개념  (0) 2016.11.18
[DB] DDL, DML, DCL 이란?  (1) 2016.11.18
[SQL] SELECT 결과 UPDATE  (0) 2016.11.18
[SQL] SQL VS CODE  (0) 2016.10.27
[SQL] Union과 Union all 차이  (0) 2016.10.12
[SQL] Joins  (0) 2016.08.24

+ Random Posts