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

จัดเรียงตามลำดับคำที่กำหนดใน MySQL ด้วย ORDER BY FIELD()

ใช้ 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 หากต้องการให้อยู่ท้าย)