[MySQL][TIP] IF, CASE, IFNULL 사용하기 (조건문)
1. 테스트할 테이블 생성 코드
CREATE TABLE `tbl_condition_test` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`col1` INT(10) UNSIGNED NULL DEFAULT NULL,
`col2` INT(10) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM
2. 샘플 데이터 삽입 코드
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (1, NULL, 11);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (2, 2, 12);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (3, 3, 13);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (4, NULL, 14);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (5, 5, 15);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (6, 6, 21);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (7, 7, 22);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (8, 8, 23);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (9, NULL, 24);
INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (10, 10, 25);
3. 상황을 하나 예로 들어서 조건문을 어떻게 사용하는지 알아보려고 합니다.
[예시] 만약 col1 값이 NULL이면 col2 값을 선택하고 만약 col1값이 NULL이 아니면 col1값을 선택한다.
3-1) IF 이용하기
SELECT IF( col1 IS NULL, col2, col1) FROM tbl_condition_test
3-2) IFNULL 이용하기
SELECT IFNULL(col1, col2) FROM tbl_condition_test
3-3) CASE WHEN THEN ELSE END 이용하기
여기에는 위 조건에 하나 더 추가하여 col1 값이 10이면 100을 선택한다로 해보겠습니다.
SELECT CASE WHEN col1 IS NULL THEN col2 WHEN col1 = 10 THEN 100 ELSE col1 END FROM tbl_condition_test
'Database > mysql tip' 카테고리의 다른 글
SQL EXPLAIN 정리 (0) | 2021.04.06 |
---|---|
[MySQL][TIP] MySQL JOIN(LEFT, RIGHT, INNER, OUTER) (0) | 2021.01.06 |
[MySQL][TIP] 필드 원소 갯수, 각각 원소 갯수세기 SUM IF (0) | 2021.01.06 |
[MySQL][TIP] DB 스키마 정보 쿼리(Query). 스키마 엑셀로 문서화 하기 (0) | 2021.01.06 |
[MySQL][TIP] datetime 필드에서 날짜 혹은 시간만 SELECT하기 (0) | 2021.01.06 |
[MySQL][TIP] 날짜별로 행의 갯수 카운팅 하기 (0) | 2021.01.06 |
[MySQL][TIP] 특정 필드 가 업데이트 될 때 트리거 작동 시키기 (0) | 2021.01.06 |
[MySQL][TIP] LIKE 문에서 대소문자 구분하기 (0) | 2021.01.06 |