728x90
출처: https://2dubbing.tistory.com/51 [비실이의 개발공간]
예시
테이블 명: TEST
idx |
name |
age |
1 |
GIM |
25 |
2 |
LEE |
27 |
3 |
PARK |
30 |
위 테이블에서 idx가 1인 row의 컬럼 name 값을 KIM으로,
idx가 3인 row의 컬럼 age 값을 29 로 변경
이 경우 아래와 같이 쿼리를 구성하여 처리한다.
UPDATE TEST
SET
name = CASE idx WHEN 1 THEN 'KIM' ELSE name END,
age = CASE idx WHEN 3 THEN 29 ELSE age END
WHERE idx IN (1, 3);
4번째 라인을 보면 ELSE 구문이 있는데 이 쿼리를 해석해보면 아래와 같다.
`idx가 1인 row의 컬럼 name의 값을 'KIM' 으로 변경하고, idx가 1이 아닌 row의 컬럼 name은 이전 값을 유지`
만약 위 쿼리에서 ELSE 구문을 모두 지운 뒤에 쿼리를 수행하면 아래와 같이 바뀌게된다.
idx |
name |
age |
1 |
KIM |
NULL |
2 |
NULL |
NULL |
3 |
NULL |
29 |
728x90
'Dev > DB' 카테고리의 다른 글
Oracle - OVER() 함수 설명 (0) | 2020.08.26 |
---|---|
[MySQL] Linux 언어설정 변경 (LATIN 1 -> EUCKR) (0) | 2020.07.20 |
[MySQL] batch작업 (0) | 2020.07.02 |
[MySQL/Oracle] Merge Into 관련 (ON DUPLICATE KEY) (0) | 2020.06.30 |
[MyBatis] Like 처리 방법 (0) | 2020.06.30 |