여러 개의 0/1 플래그 컬럼을 합산해 조건부로 상태를 결정하려면 CASE WHEN 문을 사용합니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable (
-> Value1 INT,
-> Value2 INT,
-> Value3 INT,
-> Value4 INT
-> );
Query OK, 0 rows affected (0.98 sec)
mysql> INSERT INTO DemoTable VALUES(1,0,1,1); Query OK, 1 row affected (0.22 sec) mysql> INSERT INTO DemoTable VALUES(1,0,1,0); Query OK, 1 row affected (0.13 sec) mysql> INSERT INTO DemoTable VALUES(1,1,1,1); Query OK, 1 row affected (0.20 sec) mysql> INSERT INTO DemoTable VALUES(0,0,0,0); Query OK, 1 row affected (0.15 sec)
데이터 조회
mysql> SELECT * FROM DemoTable;
+--------+--------+--------+--------+ | Value1 | Value2 | Value3 | Value4 | +--------+--------+--------+--------+ | 1 | 0 | 1 | 1 | | 1 | 0 | 1 | 0 | | 1 | 1 | 1 | 1 | | 0 | 0 | 0 | 0 | +--------+--------+--------+--------+ 4 rows in set (0.00 sec)
합계가 2 미만이면 'NotGood', 아니면 'Good'
mysql> SELECT CASE WHEN Value1+Value2+Value3+Value4 < 2 THEN 'NotGood' ELSE 'Good' END AS Status FROM DemoTable;
+---------+ | Status | +---------+ | Good | | Good | | Good | | NotGood | +---------+ 4 rows in set (0.00 sec)
확장: CASE WHEN 조건1 THEN 값1 WHEN 조건2 THEN 값2 ELSE 기본값 END로 다중 분기 가능합니다. IF()는 단일 조건만 가능하지만 CASE는 여러 조건을 순차 평가합니다.