การเรียงลำดับแบบกำหนดเองด้วย ORDER BY CASE
เมื่อต้องการเรียงลำดับข้อมูลตามเงื่อนไขเฉพาะ (ไม่ใช่เรียงตามตัวอักษรหรือตัวเลขปกติ) ใช้ ORDER BY CASE ... END
ตัวอย่าง: เรียงให้นามสกุล "Smith" อยู่ท้ายสุด
CREATE TABLE DemoTable2039 (Name VARCHAR(20));
INSERT INTO DemoTable2039 VALUES
('John Doe'), ('John Smith'), ('Chris Brown'),
('Adam Smith'), ('David Miller');
SELECT * FROM DemoTable2039
ORDER BY
CASE WHEN Name LIKE '%Smith%' THEN 101 ELSE 100 END,
Name;
ผลลัพธ์
| Name |
|---|
| Chris Brown |
| David Miller |
| John Doe |
| Adam Smith |
| John Smith |
คำอธิบาย: CASE ให้ค่า 100 กับชื่อที่ไม่ใช่ Smith, 101 กับชื่อที่เป็น Smith ทำให้ Smith อยู่ท้าย ในกลุ่มเดียวกันจะเรียงตามชื่อตามปกติ
การประยุกต์: สามารถเพิ่มเงื่อนไข CASE ได้หลายระดับ เพื่อสร้างลำดับความสำคัญหลายชั้น