การเลือกและเรียงลำดับตามลำดับ ID ที่กำหนดด้วย IN() และ FIELD()
เมื่อต้องการดึงข้อมูลเฉพาะ ID บางชุด และเรียงตามลำดับที่เรากำหนด (ไม่ใช่ลำดับธรรมดา) เราใช้ WHERE ... IN(...) ร่วมกับ ORDER BY FIELD(...)
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
StudentId VARCHAR(10),
StudentName VARCHAR(20)
);
Query OK, 0 rows affected (4.11 sec)
mysql> INSERT INTO DemoTable VALUES('10001','Adam');
mysql> INSERT INTO DemoTable VALUES('1010','Chris');
mysql> INSERT INTO DemoTable VALUES('1020','Bob');
mysql> INSERT INTO DemoTable VALUES('1030','Carol');
mysql> INSERT INTO DemoTable VALUES('1040','Sam');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 10001 | Adam |
| 1010 | Chris |
| 1020 | Bob |
| 1030 | Carol |
| 1040 | Sam |
+-----------+-------------+
5 rows in set (0.00 sec)
คำสั่งเลือกและเรียงตามลำดับที่กำหนด
mysql> SELECT * FROM DemoTable
WHERE StudentId IN('1040','1010','1020','1030','10001')
ORDER BY FIELD(StudentId, '1040','1010','1020','1030','10001');
ผลลัพธ์:
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1040 | Sam |
| 1010 | Chris |
| 1020 | Bob |
| 1030 | Carol |
| 10001 | Adam |
+-----------+-------------+
5 rows in set (0.02 sec)
คำอธิบาย
WHERE StudentId IN(...): กรองเฉพาะ ID ที่ต้องการORDER BY FIELD(StudentId, ...): เรียงตามลำดับที่ปรากฏในรายการ FIELD- ทั้ง IN และ FIELD ต้องมีรายการ ID เหมือนกันและครบถ้วน
- เหมาะสำหรับการแสดงผลตามลำดับความสำคัญหรือลำดับที่ผู้ใช้กำหนด