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

เขียน MySQL CASE Statement กำหนดข้อความผลการเรียนนักเรียน

ใช้คำสั่ง CASE WHEN ใน MySQL เพื่อกำหนดข้อความ custom ตามเงื่อนไขคะแนนนักเรียน

Syntax

CASE 
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE result_default
END

ตัวอย่างการใช้งาน

1. สร้างตารางและเพิ่มข้อมูล

mysql> create table DemoTable1916 ( StudentName varchar(20), StudentMarks int ); Query OK, 0 rows affected (0.00 sec)

mysql> insert into DemoTable1916 values('Chris',59); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1916 values('David',89); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1916 values('Sam',94); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1916 values('Mike',75); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1916 values('Carol',69); Query OK, 1 row affected (0.00 sec)

ข้อมูลทั้งหมด:

mysql> select * from DemoTable1916;
+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| Chris       |           59 |
| David       |           89 |
| Sam         |           94 |
| Mike        |           75 |
| Carol       |           69 |
+-------------+--------------+
5 rows in set (0.00 sec)

2. ใช้ CASE WHEN กำหนดผลการเรียน

mysql> select StudentName, 
    -> case when StudentMarks > 70 Then 'Good Marks' 
    -> else 'Not Good Marks' 
    -> end as Result 
    -> from DemoTable1916;

ผลลัพธ์:

+-------------+----------------+
| StudentName | Result         |
+-------------+----------------+
| Chris       | Not Good Marks |
| David       | Good Marks     |
| Sam         | Good Marks     |
| Mike        | Good Marks     |
| Carol       | Not Good Marks |
+-------------+----------------+
5 rows in set (0.00 sec)

รูปแบบ CASE Statement แบบต่างๆ

Simple CASE (เปรียบเทียบค่าเดียว)

CASE grade 
    WHEN 'A' THEN 'Excellent' 
    WHEN 'B' THEN 'Good' 
    ELSE 'Needs Improvement' 
END

Searched CASE (เงื่อนไขซับซ้อน) - ใช้ในตัวอย่างข้างต้น

CASE 
    WHEN StudentMarks >= 90 THEN 'A'
    WHEN StudentMarks >= 80 THEN 'B'
    WHEN StudentMarks >= 70 THEN 'C'
    WHEN StudentMarks >= 60 THEN 'D'
    ELSE 'F'
END

การใช้ CASE ใน UPDATE

UPDATE students 
SET grade = CASE 
    WHEN marks >= 90 THEN 'A'
    WHEN marks >= 80 THEN 'B'
    ELSE 'C'
END;

สรุป: ใช้ CASE WHEN ... THEN ... ELSE ... END เพื่อสร้างคอลัมน์คำนวณ (Computed Column) หรือ Logic แบบมีเงื่อนไขหลายระดับ ใน SELECT, UPDATE, ORDER BY ได้เลย