ใช้ฟังก์ชัน IF() ภายในนิพจน์คำนวณ เพื่อรวมค่าคอลัมน์ตามเงื่อนไข เช่น บวก Value3 เข้าไปก็ต่อเมื่อมันมากกว่า 0
ตัวอย่างการใช้งาน
1. สร้างตาราง
mysql> CREATE TABLE DemoTable (
Value1 INT,
Value2 INT,
Value3 INT
);
Query OK, 0 rows affected (0.64 sec)
2. เพิ่มข้อมูลทดสอบ (มีค่าติดลบใน Value3)
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)
3. แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable; +--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 10 | 20 | -30 | | 50 | 60 | 90 | | 100 | 200 | 400 | | 30 | 40 | -50 | | 70 | 80 | -1 | +--------+--------+--------+
4. คำนวณ: Value1 + Value2 + (Value3 ถ้า > 0 ไม่อย่างนั้น 0)
mysql> SELECT Value1 + Value2 + IF(Value3 > 0, Value3, 0) FROM DemoTable;
5. ผลลัพธ์
+---------------------------------------+ | Value1+Value2+IF(Value3>0,Value3,0) | +---------------------------------------+ | 30 | | 200 | | 700 | | 70 | | 150 | +---------------------------------------+
การคำนวณแต่ละแถว
| Value1 | Value2 | Value3 | เงื่อนไข | คำนวณ | ผลลัพธ์ |
|---|---|---|---|---|---|
| 10 | 20 | -30 | Value3 ≤ 0 | 10+20+0 | 30 |
| 50 | 60 | 90 | Value3 > 0 | 50+60+90 | 200 |
| 100 | 200 | 400 | Value3 > 0 | 100+200+400 | 700 |
| 30 | 40 | -50 | Value3 ≤ 0 | 30+40+0 | 70 |
| 70 | 80 | -1 | Value3 ≤ 0 | 70+80+0 | 150 |
ฟังก์ชัน IF() vs CASE WHEN
| ฟังก์ชัน | เหมาะสำหรับ | ตัวอย่าง |
|---|---|---|
IF(cond, true_val, false_val) | เงื่อนไข 2 ทางเลือก (Binary) | IF(score>50, 'Pass', 'Fail') |
CASE WHEN cond1 THEN v1 WHEN cond2 THEN v2 ELSE v3 END | หลายเงื่อนไข / Logic ซับซ้อน | เกรด A/B/C/D/F |
สรุป
IF() ใช้งานง่ายสำหรับเงื่อนไขแบบทวิภาค (True/False) ภายในนิพจน์คำนวณหรือ SELECT ได้โดยตรง ช่วยลดความซับซ้อนของ CASE WHEN เมื่อมีแค่ 2 ทางเลือก