คำชี้แจงกรณี MySQL
คำชี้แจงกรณีของ MySQL
คำCASE
สั่งจะผ่านเงื่อนไขและส่งกลับค่าเมื่อตรงตามเงื่อนไขแรก (เช่นคำสั่ง if-then-else) ดังนั้น เมื่อเงื่อนไขเป็นจริง เงื่อนไขนั้นจะหยุดอ่านและส่งคืนผลลัพธ์ หากไม่มีเงื่อนไขใด ๆ เป็นจริง จะส่งกลับค่าในส่วนELSE
คำสั่ง
หากไม่มีELSE
ส่วนใดและไม่มีเงื่อนไขใดเป็นจริง จะส่งกลับค่า NULL
ไวยากรณ์กรณี
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN
conditionN THEN resultN
ELSE result
END;
ฐานข้อมูลสาธิต
ด้านล่างนี้คือการเลือกจากตาราง "OrderDetails" ในฐานข้อมูลตัวอย่าง Northwind:
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
ตัวอย่างกรณี MySQL
SQL ต่อไปนี้จะผ่านเงื่อนไขและส่งกลับค่าเมื่อตรงตามเงื่อนไขแรก:
ตัวอย่าง
SELECT OrderID, Quantity,
CASE
WHEN Quantity > 30
THEN 'The quantity is greater than 30'
WHEN Quantity = 30 THEN 'The
quantity is 30'
ELSE 'The quantity is under 30'
END AS QuantityText
FROM OrderDetails;
SQL ต่อไปนี้จะสั่งซื้อลูกค้าตามเมือง อย่างไรก็ตาม หากเมืองเป็น NULL ให้เรียงลำดับตามประเทศ:
ตัวอย่าง
SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END);