เมื่อต้องการแสดงข้อมูลตามลำดับที่คุณกำหนดเอง ไม่ใช่ลำดับปกติของฐานข้อมูล สามารถใช้ฟังก์ชัน FIELD() ร่วมกับ IN() ได้ ซึ่งเป็นเทคนิคที่มีประโยชน์มากเมื่อต้องการควบคุมลำดับการแสดงผลแบบกำหนดเอง
ตัวอย่างการใช้งาน
ขั้นแรก สร้างตารางตัวอย่าง:
mysql> create table DemoTable ( UserId int );
เพิ่มข้อมูลทดสอบ:
mysql> insert into DemoTable values(100); mysql> insert into DemoTable values(10); mysql> insert into DemoTable values(40); mysql> insert into DemoTable values(80); mysql> insert into DemoTable values(70); mysql> insert into DemoTable values(60);
ข้อมูลในตารางจะอยู่ในลำดับที่เพิ่มเข้าไป:
+--------+ | UserId | +--------+ | 100 | | 10 | | 40 | | 80 | | 70 | | 60 | +--------+
คำสั่งสำหรับจัดลำดับแบบกำหนดเอง
mysql> select UserId from DemoTable where UserId IN(60,100,10,80,40,70) order by field(UserId,60,100,10,80,40,70);
ผลลัพธ์
+--------+ | UserId | +--------+ | 60 | | 100 | | 10 | | 80 | | 40 | | 70 | +--------+
คำอธิบาย
- IN() - กรองเฉพาะ ID ที่ต้องการ
- FIELD() - กำหนดลำดับการจัดเรียงตามตำแหน่งของค่าในรายการ
- รูปแบบ:
FIELD(คอลัมน์, ค่า1, ค่า2, ค่า3...)
หมายเหตุ: วิธีนี้มีประสิทธิภาพดีสำหรับข้อมูลปริมาณน้อยถึงปานกลาง สำหรับข้อมูลจำนวนมาก ควรพิจารณาใช้ตาราง mapping หรือ JOIN แทนเพื่อประสิทธิภาพที่ดีกว่า