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

แสดง ID ตามลำดับที่กำหนดด้วย MySQL IN() และ FIELD()

เมื่อต้องการแสดงข้อมูลตามลำดับที่คุณกำหนดเอง ไม่ใช่ลำดับปกติของฐานข้อมูล สามารถใช้ฟังก์ชัน 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 แทนเพื่อประสิทธิภาพที่ดีกว่า