ใช้ ORDER BY FIELD(column, 'val1', 'val2', ...) เพื่อจัดเรียงตามลำดับที่ระบุ
ตัวอย่าง
mysql> create table DemoTable (
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFirstName varchar(20),
StudentFavouriteSubject varchar(100)
);
Query OK, 0 rows affected (0.52 sec)
mysql> insert into DemoTable(StudentFirstName,StudentFavouriteSubject) values('Larry','Java'); Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(StudentFirstName,StudentFavouriteSubject) values('Sam','C'); Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(StudentFirstName,StudentFavouriteSubject) values('Bob','MongoDB'); Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(StudentFirstName,StudentFavouriteSubject) values('David','MySQL'); Query OK, 1 row affected (0.17 sec)
ข้อมูล
mysql> select * from DemoTable;
+-----------+------------------+-------------------------+ | StudentId | StudentFirstName | StudentFavouriteSubject | +-----------+------------------+-------------------------+ | 1 | Larry | Java | | 2 | Sam | C | | 3 | Bob | MongoDB | | 4 | David | MySQL | +-----------+------------------+-------------------------+
จัดเรียงตามลำดับ: MongoDB, MySQL, Java, C
mysql> select * from DemoTable ORDER BY FIELD(`StudentFavouriteSubject`, 'MongoDB','MySQL','Java','C');
+-----------+------------------+-------------------------+ | StudentId | StudentFirstName | StudentFavouriteSubject | +-----------+------------------+-------------------------+ | 3 | Bob | MongoDB | | 4 | David | MySQL | | 1 | Larry | Java | | 2 | Sam | C | +-----------+------------------+-------------------------+
ค่าที่ไม่อยู่ในรายการ FIELD จะได้ 0 และจัดอยู่หน้าสุด (ใช้ FIELD(...) DESC หากต้องการให้อยู่ท้าย)