ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] SELECT 결과 UPDATE
    DB 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를 추가해줌
    -- 조인도 가능


    댓글