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

การแสดงรายการเฉพาะและเรียงลำดับแบบกำหนดเองใน MySQL

การเรียงลำดับแบบกำหนดเองด้วย 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 ได้หลายระดับ เพื่อสร้างลำดับความสำคัญหลายชั้น