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

ใช้ CASE WHEN ใน MySQL เพื่อตรวจสอบเงื่อนไขหลายคอลัมน์ (คล้าย WHERE ใน CASE)

การใช้ CASE WHEN แทนการใช้ WHERE ภายใน CASE

MySQL ไม่รองรับการเขียน WHERE โดยตรงภายใน CASE แต่เราสามารถใช้ CASE WHEN condition THEN ... ELSE ... END เพื่อตรวจสอบเงื่อนไขที่เกี่ยวข้องกับหลายคอลัมน์ได้

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

mysql> CREATE TABLE DemoTable1040 (Value1 INT, Value2 INT, Value3 INT);
Query OK, 0 rows affected (0.65 sec)

mysql> INSERT INTO DemoTable1040 VALUES(10,30,1);
mysql> INSERT INTO DemoTable1040 VALUES(40,20,50);
mysql> INSERT INTO DemoTable1040 VALUES(80,90,100);

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable1040;

ผลลัพธ์:

+--------+--------+--------+
| Value1 | Value2 | Value3 |
+--------+--------+--------+
| 10     | 30     | 1      |
| 40     | 20     | 50     |
| 80     | 90     | 100    |
+--------+--------+--------+
3 rows in set (0.00 sec)

คำสั่ง CASE WHEN: ถ้า Value1=40 และ Value2=20 ให้เลือก Value2 มิฉะนั้น Value1

mysql> SELECT CASE WHEN (Value1 = 40 AND Value2 = 20) THEN Value2 ELSE Value1 END AS selectedValue
    FROM DemoTable1040;

ผลลัพธ์:

+---------------+
| selectedValue |
+---------------+
| 10            |
| 20            |
| 80            |
+---------------+
3 rows in set (0.00 sec)

คำอธิบาย

  • CASE WHEN (Value1=40 AND Value2=20) THEN Value2 ELSE Value1 END : ตรวจสอบเงื่อนไขรวม 2 คอลัมน์
  • แถวแรก: (10,30) ไม่ตรง → ELSE → Value1=10
  • แถวสอง: (40,20) ตรง → THEN → Value2=20
  • แถวสาม: (80,90) ไม่ตรง → ELSE → Value1=80
  • รูปแบบ CASE WHEN ... THEN ... ELSE ... END ใช้ได้ใน SELECT, WHERE, ORDER BY, GROUP BY
  • สามารถมี WHEN หลายอันได้: CASE WHEN cond1 THEN v1 WHEN cond2 THEN v2 ELSE v3 END