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

MySQL UPDATE พร้อมเงื่อนไข IF() กำหนดสถานะ PASS/FAIL จากคะแนน

ใช้ฟังก์ชัน 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 อื่นๆ ได้