ORDER BY 与 FIELD结合:通过将FIELD函数放在ORDER BY子句中,我们可以自定义排序顺序,而不是按照默认的升序或降序排序。

下面我将创建一个名为students的表,插入10条记录,并使用ORDER BY FIELD函数举例说明其用法。

演示

1.创建表

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    grade VARCHAR(10)
);


2.插入10条记录

INSERT INTO students (id, name, grade) VALUES
(1, 'Alice', 'C'),
(2, 'Bob', 'A'),
(3, 'Charlie', 'B'),
(4, 'David', 'C'),
(5, 'Eve', 'B'),
(6, 'Frank', 'A'),
(7, 'Grace', 'C'),
(8, 'Heidi', 'B'),
(9, 'Ivan', 'A'),
(10, 'Judy', 'B');


3.使用 ORDER BY FIELD 函数举例

假设我们想按照特定的grade顺序来排序,顺序为:BAC

SELECT * FROM students
ORDER BY FIELD(grade, 'B', 'A', 'C');

查询结果

id

name

grade

3

Charlie

B

5

Eve

B

8

Heidi

B

10

Judy

B

2

Bob

A

6

Frank

A

9

Ivan

A

1

Alice

C

4

David

C

7

Grace

C

在上述查询中,ORDER BY FIELD(grade, 'B', 'A', 'C')会按照我们指定的顺序对grade字段进行排序。首先显示gradeB的记录,然后是A,最后是C。这样,我们就可以根据需要指定任意的排序顺序。