programing

여러 열을 업데이트하는 MySQL CASE

iphone6s 2023. 10. 29. 19:06
반응형

여러 열을 업데이트하는 MySQL CASE

case statement를 사용하여 테이블의 여러 열을 업데이트하고 싶지만 이를 수행하는 방법을 찾을 수 없습니다(이 방법도 가능한가요).다음과 같은 잘못된 참조 쿼리를 생각해 냈습니다.

UPDATE tablename SET
    CASE name
        WHEN 'name1' THEN col1=5,col2=''
        WHEN 'name2' THEN col1=3,col2='whatever'
        ELSE col1=0,col2=''
    END;

유효한 SQL로 기대한 결과를 얻을 수 있는 방법이 있습니까?

UPDATE tablename
SET col1 = CASE WHEN name = 'name1' THEN 5 
                WHEN name = 'name2' THEN 3 
                ELSE 0 
           END
 , col2 = CASE WHEN name = 'name1' THEN '' 
               WHEN name = 'name2' THEN 'whatever' 
               ELSE '' 
          END
;

저는 당신이 요구하는 것을 할 수 있는 어떤 깨끗한 방법도 모릅니다.동등한 유효한 SQL 업데이트는 다음과 같습니다.

UPDATE tablename SET
    col1 = CASE name WHEN 'name1' THEN 5 WHEN 'name2' THEN 3 ELSE 0 END,
    col2 = CASE name WHEN 'name1' THEN '' WHEN 'name2' THEN 'whatever' ELSE '' END;

물론 이것은 예쁘지 않으며 같은 경우를 반복해야 합니다(예:'name1') 여러 번이지만 다른 방법으로는 불가능하다고 생각합니다.

한다면name는 고유한 인덱스를 가지고 있으며 사용자의 값이 테이블에 존재하는 것으로 알려져 있으므로 다음과 같은 방법을 사용할 수 있습니다.

INSERT INTO tablename (name, col1, col2)
VALUES ('name1', 5, '')
     , ('name2', 3, 'whatever')
ON DUPLICATE KEY UPDATE
       col1 = VALUES(col1)
     , col2 = VALUES(col2);

추가사항이 있는 경우NOT NULL기본값이 없는 열에 더미 값을 추가해야 합니다.그냥 그들을 빼주세요.ON DUPLICATE KEY UPDATE무시당하게 될 겁니다

언급URL : https://stackoverflow.com/questions/13673890/mysql-case-to-update-multiple-columns

반응형