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

จัดลำดับผลลัพธ์ MySQL ให้ตรงกับลำดับ ID ที่ระบุด้วย FIND_IN_SET

ใช้ FIND_IN_SET() ใน ORDER BY เพื่อจัดเรียงตามลำดับ ID ที่ส่งมา

mysql> CREATE TABLE DemoTable1563 (
    -> StudentId INT,
    -> StudentName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.52 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1001, 'Chris');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1010, 'Bob');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1005, 'Chris');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1015, 'David');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1030, 'Mike');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable1563 VALUES(1020, 'Sam');
Query OK, 1 row affected (0.14 sec)
mysql> SELECT * FROM DemoTable1563;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|      1001 | Chris       |
|      1010 | Bob         |
|      1005 | Chris       |
|      1015 | David       |
|      1030 | Mike        |
|      1020 | Sam         |
+-----------+-------------+
6 rows in set (0.00 sec)

แสดงเฉพาะ ID 1001,1030,1010,1020 ตามลำดับนี้:

mysql> SELECT * FROM DemoTable1563
    -> WHERE StudentId IN (1001, 1030, 1010, 1020)
    -> ORDER BY FIND_IN_SET(StudentId, '1001,1030,1010,1020');
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|      1001 | Chris       |
|      1030 | Mike        |
|      1010 | Bob         |
|      1020 | Sam         |
+-----------+-------------+
4 rows in set (0.00 sec)

ใช้ได้กับ: API ที่รับรายการ ID มาจาก Frontend ต้องการส่งกลับตามลำดับเดิม