IF(조건, 참값, 거짓값)을 SELECT 절에서 사용하면 컬럼 값을 조건부로 합산에 포함할 수 있습니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable (
-> Value1 INT,
-> Value2 INT,
-> Value3 INT
-> );
Query OK, 0 rows affected (0.64 sec)
mysql> INSERT INTO DemoTable VALUES(10,20,-30); Query OK, 1 row affected (0.20 sec) mysql> INSERT INTO DemoTable VALUES(50,60,90); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO DemoTable VALUES(100,200,400); Query OK, 1 row affected (0.09 sec) mysql> INSERT INTO DemoTable VALUES(30,40,-50); Query OK, 1 row affected (0.16 sec) mysql> INSERT INTO DemoTable VALUES(70,80,-1); Query OK, 1 row affected (0.24 sec)
데이터 조회
mysql> SELECT * FROM DemoTable;
+--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 10 | 20 | -30 | | 50 | 60 | 90 | | 100 | 200 | 400 | | 30 | 40 | -50 | | 70 | 80 | -1 | +--------+--------+--------+ 5 rows in set (0.00 sec)
Value3이 양수일 때만 합산에 포함
mysql> SELECT Value1 + Value2 + IF(Value3 > 0, Value3, 0) FROM DemoTable;
+---------------------------------------+ | Value1+Value2+IF(Value3>0,Value3,0) | +---------------------------------------+ | 30 | | 200 | | 700 | | 70 | | 150 | +---------------------------------------+ 5 rows in set (0.00 sec)
해설: 1행: 10+20+0=30 (Value3=-30 제외), 2행: 50+60+90=200, 3행: 100+200+400=700, 4행: 30+40+0=70, 5행: 70+80+0=150. IF()는 MySQL 전용이며, 표준 SQL은 CASE WHEN Value3 > 0 THEN Value3 ELSE 0 END입니다.