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

เรียงลำดับตามลำดับค่าใน IN Clause ด้วย FIELD() ใน MySQL

ใช้ฟังก์ชัน FIELD() ร่วม ORDER BY เพื่อกำหนดลำดับเฉพาะเจาะจงใน IN clause รูปแบบ:

SELECT * FROM yourTableName
WHERE yourColumnName IN (val1, val2, val3, ...)
ORDER BY FIELD(yourColumnName, val1, val2, val3, ...);

ตัวอย่าง

สร้างตารางนักเรียน 7 เรคคอร์ด

เรียงตามลำดับ ID ที่กำหนด: 1, 96, 101, 10, 15, 11, 20

mysql> SELECT * FROM SelectInDemo
    -> WHERE StudentId IN (1,96,101,10,15,11,20)
    -> ORDER BY FIELD(StudentId, 1,96,101,10,15,11,20);

ผลลัพธ์: ข้อมูลเรียงตามลำดับ ID ที่ระบุใน FIELD() ทุกประการ

ลำดับที่ 2: 1, 10, 11, 15, 20, 101, 96

mysql> SELECT * FROM SelectInDemo
    -> WHERE StudentId IN (1,10,11,15,20,101,96)
    -> ORDER BY FIELD(StudentId, 1,10,11,15,20,101,96);

ประโยชน์: ควบคุมลำดับการแสดงผลได้อย่างแม่นยำ ไม่ผูกตับกับ ASC/DESC ธรรมดา