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

การใช้คำสั่ง CASE WHEN ใน MySQL สำหรับการจัดการเงื่อนไข


ภาพรวมของคำสั่ง 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