복붙노트

[SQL] 하나 개의 쿼리로 여러 행을 업데이트?

SQL

하나 개의 쿼리로 여러 행을 업데이트?

내가 뭔가를 발견 여기에서 업데이트 한 필드 작품 : http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-and-a-single-sql-query/

UPDATE person
    SET name = CASE id
        WHEN 1 THEN 'Jim'
        WHEN 2 THEN 'Mike'
        WHEN 3 THEN 'Precious'
    END
WHERE id IN (1,2,3)

내 질문은 두 개 이상의 필드를 업데이트하는 방법은? 예를 들면 :

UPDATE person
    SET name = CASE, sex = CASE id
        WHEN 1 THEN 'Jim', 'female'
        WHEN 2 THEN 'Mike', 'male'
        WHEN 3 THEN 'Precious', 'male'
    END
WHERE id IN (1,2,3)

어느 물론 작동하지 않습니다. 몇 가지 다른 조합을 시도하고 실패했습니다. 어떤 생각? 감사!

해결법

  1. ==============================

    1.

    UPDATE person
        SET name = CASE id
            WHEN 1 THEN 'Jim'
            WHEN 2 THEN 'Mike'
            WHEN 3 THEN 'Precious'
        END,
        sex = CASE id
            WHEN 1 THEN 'female'
            WHEN 2 THEN 'male'
            WHEN 3 THEN 'male'
        END
    WHERE id IN (1,2,3)
    
  2. ==============================

    2.아래처럼 뭔가를 시도. 여러 "SET"문 각 열에 하나를 사용할 수 있습니다.

    아래처럼 뭔가를 시도. 여러 "SET"문 각 열에 하나를 사용할 수 있습니다.

    UPDATE person 
        SET name = CASE id 
            WHEN 1 THEN 'Jim' 
            WHEN 2 THEN 'Mike' 
            WHEN 3 THEN 'Precious' 
        END, 
        sex = CASE id 
            WHEN 1 THEN 'female' 
            WHEN 2 THEN 'male' 
            WHEN 3 THEN 'male' 
        END 
    WHERE id IN (1,2,3) 
    
  3. from https://stackoverflow.com/questions/2528181/update-multiple-rows-with-one-query by cc-by-sa and MIT license