ใช้ฟังก์ชัน IF() ภายในคำสั่ง UPDATE เพื่อกำหนดค่าคอลัมน์ตามเงื่อนไขแบบ Inline ได้ทันที
ตัวอย่างการใช้งาน
1. สร้างตารางนักเรียน
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(20),
StudentMarks INT,
Status VARCHAR(20)
);
Query OK, 0 rows affected (0.97 sec)
2. เพิ่มข้อมูลนักเรียน (ยังไม่มีสถานะ)
mysql> INSERT INTO DemoTable(StudentName, StudentMarks) VALUES('Chris', 79);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable(StudentName, StudentMarks) VALUES('David', 59);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable(StudentName, StudentMarks) VALUES('Bob', 60);
Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable(StudentName, StudentMarks) VALUES('Mike', 45);
Query OK, 1 row affected (0.16 sec)
3. ข้อมูลก่อนอัปเดต
mysql> SELECT * FROM DemoTable; +-----------+-------------+--------------+--------+ | StudentId | StudentName | StudentMarks | Status | +-----------+-------------+--------------+--------+ | 1 | Chris | 79 | NULL | | 2 | David | 59 | NULL | | 3 | Bob | 60 | NULL | | 4 | Mike | 45 | NULL | +-----------+-------------+--------------+--------+
4. UPDATE ด้วย IF() : คะแนน > 60 = PASS, ไม่เช่นนั้น = FAIL
mysql> UPDATE DemoTable
SET Status = IF(StudentMarks > 60, 'PASS', 'FAIL');
Query OK, 4 rows affected (0.40 sec)
Rows matched: 4 Changed: 4 Warnings: 0
5. ผลลัพธ์หลังอัปเดต
mysql> SELECT * FROM DemoTable; +-----------+-------------+--------------+--------+ | StudentId | StudentName | StudentMarks | Status | +-----------+-------------+--------------+--------+ | 1 | Chris | 79 | PASS | | 2 | David | 59 | FAIL | | 3 | Bob | 60 | FAIL | | 4 | Mike | 45 | FAIL | +-----------+-------------+--------------+--------+
ไวยากรณ์ IF()
IF(condition, value_if_true, value_if_false)
ขยายความสามารถ: ใช้ CASE WHEN สำหรับเงื่อนไขหลายระดับ
UPDATE DemoTable
SET Status = CASE
WHEN StudentMarks >= 80 THEN 'A'
WHEN StudentMarks >= 70 THEN 'B'
WHEN StudentMarks >= 60 THEN 'C'
WHEN StudentMarks >= 50 THEN 'D'
ELSE 'F'
END;
สรุป
IF() ใช้สำหรับเงื่อนไข 2 ทางเลือก ส่วน CASE WHEN ใช้สำหรับเงื่อนไขหลายระดับ ทั้งคู่ใช้ได้ใน UPDATE, SELECT, WHERE และ clause อื่นๆ ได้