MySQL查询按NULL值排序

让我们首先创建一个表-

mysql> create table DemoTable707 (
   StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   StudentFirstName varchar(100),
   StudentMarks int
);

使用插入命令在表中插入一些记录-

mysql> insert into DemoTable707(StudentFirstName,StudentMarks) values('John',45);
mysql> insert into DemoTable707(StudentFirstName,StudentMarks) values(NULL,65);
mysql> insert into DemoTable707(StudentFirstName,StudentMarks) values('Chris',78);
mysql> insert into DemoTable707(StudentFirstName,StudentMarks) values(NULL,89);
mysql> insert into DemoTable707(StudentFirstName,StudentMarks) values('Robert',99);
mysql> insert into DemoTable707(StudentFirstName,StudentMarks) values(NULL,34);
mysql> insert into DemoTable707(StudentFirstName,StudentMarks) values('Mike',43);

使用select语句显示表中的所有记录-

mysql> select *from DemoTable707;

这将产生以下输出-

+-----------+------------------+--------------+
| StudentId | StudentFirstName | StudentMarks |
+-----------+------------------+--------------+
| 1         | John             | 45           |
| 2         | NULL             | 65           |
| 3         | Chris            | 78           |
| 4         | NULL             | 89           |
| 5         | Robert           | 99           |
| 6         | NULL             | 34           |
| 7         | Mike             | 43            |
+-----------+------------------+--------------+
7 rows in set (0.00 sec)

以下是按NULL值排序的查询-

mysql> select *from DemoTable707 order by StudentFirstName IS NULL, StudentFirstName DESC;

这将产生以下输出-

+-----------+------------------+--------------+
| StudentId | StudentFirstName | StudentMarks |
+-----------+------------------+--------------+
| 5         | Robert           | 99           |
| 7         | Mike             | 43           |
| 1         | John             | 45           |
| 3         | Chris            | 78           |
| 2         | NULL             | 65           |
| 4         | NULL             | 89           |
| 6         | NULL             | 34           |
+-----------+------------------+--------------+
7 rows in set (0.00 sec)