Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL บวกคอลัมน์พร้อมเงื่อนไข IF() : บวก Value3 ก็ต่อเมื่อ > 0

ใช้ฟังก์ชัน 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 |
+---------------------------------------+

การคำนวณแต่ละแถว

Value1Value2Value3เงื่อนไขคำนวณผลลัพธ์
1020-30Value3 ≤ 010+20+030
506090Value3 > 050+60+90200
100200400Value3 > 0100+200+400700
3040-50Value3 ≤ 030+40+070
7080-1Value3 ≤ 070+80+0150

ฟังก์ชัน 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 ทางเลือก