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

จัดเรียงแบบกำหนดเองด้วย FIELD() ใน MySQL

การจัดเรียงแบบกำหนดเอง (Custom Sort) ใน MySQL ด้วย FIELD()

ฟังก์ชัน FIELD(str, val1, val2, ...) คืนค่าตำแหน่งของ str ในรายการ (1-based) ค่าที่ไม่อยู่ในรายการ = 0 | ใช้ใน ORDER BY เพื่อกำหนดลำดับเฉพาะ

ตัวอย่างการใช้งาน

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

mysql> create table DemoTable (StudentId int);
mysql> insert into DemoTable values(100);
mysql> insert into DemoTable values(110);
mysql> insert into DemoTable values(90);
mysql> insert into DemoTable values(70);
mysql> insert into DemoTable values(120);
mysql> insert into DemoTable values(140);

ข้อมูลต้นฉบับ:

+-----------+
| StudentId |
+-----------+
| 100       |
| 110       |
| 90        |
| 70        |
| 120       |
| 140       |
+-----------+

คิวรีจัดเรียงตามลำดับที่กำหนด: 100, 70, 140, 90, 120, 110

mysql> select * from DemoTable order by field(StudentId, '100', '70', '140', '90', '120', '110');
+-----------+
| StudentId |
+-----------+
| 100       |
| 70        |
| 140       |
| 90        |
| 120       |
| 110       |
+-----------+

เทียบกับ IF():

  • FIELD() - ระบุลำดับได้หลายค่า สะดวก อ่านง่าย
  • IF() - เหมาะสำหรับ 2-3 ระดับ優先 (Priority)
  • CASE WHEN - ยืดหยุ่นที่สุด สำหรับ Logic ซับซ้อน

ข้อควรระวัง: FIELD() เปรียบเทียบเป็น String | หากคอลัมน์เป็น Number ให้ Cast: FIELD(CAST(StudentId AS CHAR), ...) หรือเขียนตัวเลขไม่ Quote ก็ได้ (MySQL จะแปลงอัตโนมัติ)