반응형
여러 열을 업데이트하는 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
반응형
'programing' 카테고리의 다른 글
| GIT와 CVS의 차이 (0) | 2023.10.29 |
|---|---|
| 어떻게 하면 빈칸 없이 긴 끈을 강제로 감을 수 있을까요? (0) | 2023.10.29 |
| Oracle: 하위 쿼리의 여러 결과를 쉼표로 구분된 단일 값으로 결합합니다. (0) | 2023.10.29 |
| RecyclerView에서 보이는 항목 가져오기 (0) | 2023.10.29 |
| Wordpress: 오류 메시지 표시 - wp_insert_post_data 또는 publish_post에서 hook admin_notics 실패 (0) | 2023.10.29 |