ใช้คำสั่ง 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 ได้เลย