ภาพรวมของคำสั่ง CASE WHEN
คำสั่ง CASE WHEN ใน MySQL ใช้สำหรับจัดการเงื่อนไขหลายเงื่อนไขในคำสั่ง SQL โดยสามารถกำหนดผลลัพธ์ที่แตกต่างกันได้ตามเงื่อนไขที่ตรงกัน รูปแบบพื้นฐานมีดังนี้:
SELECT *,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END AS alias_name
FROM table_name;
ตัวอย่างการใช้งานจริง
1. สร้างตารางตัวอย่าง
mysql> CREATE TABLE DemoTable (
-> StudentName VARCHAR(20),
-> StudentMarks INT
-> );
Query OK, 0 rows affected (0.77 sec)
2. เพิ่มข้อมูลทดสอบ
mysql> INSERT INTO DemoTable VALUES('Chris', 78);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('Robert', 88);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Mike', 75);
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('Sam', 98);
Query OK, 1 row affected (0.16 sec)
3. แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 78 | | Robert | 88 | | Mike | 75 | | Sam | 98 | +-------------+--------------+ 4 rows in set (0.00 sec)
4. ใช้ CASE WHEN จัดเกรดคะแนน
mysql> SELECT *,
-> CASE
-> WHEN StudentMarks > 90 THEN 'Very Good Score'
-> WHEN StudentMarks > 80 THEN 'Good Score'
-> ELSE 'Not Good'
-> END AS Status
-> FROM DemoTable;
ผลลัพธ์:
+-------------+--------------+-----------------+ | StudentName | StudentMarks | Status | +-------------+--------------+-----------------+ | Chris | 78 | Not Good | | Robert | 88 | Good Score | | Mike | 75 | Not Good | | Sam | 98 | Very Good Score | +-------------+--------------+-----------------+ 4 rows in set (0.00 sec)
ข้อสังเกตสำคัญ
- เงื่อนไขจะถูกตรวจสอบตามลำดับจากบนลงล่าง
- เมื่อเงื่อนไขใดเป็นจริง จะคืนค่าผลลัพธ์ทันทีและไม่ตรวจสอบเงื่อนไขต่อไป
- คำสั่ง
ELSEเป็นตัวเลือก (optional) หากไม่ระบุและไม่มีเงื่อนไขใดตรง จะคืนค่า NULL - ต้องปิดด้วย
ENDและสามารถตั้งชื่อคอลัมน์ผลลัพธ์ด้วยAS