如何按MySQL中的列排序记录并将空记录放在末尾?

要按列排序并在末尾放置空记录,请使用ORDER By,MySQL中的“ is null”。语法如下-

select *from yourTableName order by if(yourColumName = ’ ’ or yourColumName is null,1,0),yourColumnName;

为了理解上述语法,让我们创建一个表。创建表的查询如下-

mysql> create table emptyCellsAtEnd
   −> (
   −> ProductId varchar(100)
   −> );

使用insert命令在表中插入一些记录。这些记录中有些是空的。查询如下-

mysql> insert into emptyCellsAtEnd values('');

mysql> insert into emptyCellsAtEnd values('P-1');

mysql> insert into emptyCellsAtEnd values('P-2');

mysql> insert into emptyCellsAtEnd values('');

mysql> insert into emptyCellsAtEnd values('P-3');

mysql> insert into emptyCellsAtEnd values('P-4');

mysql> insert into emptyCellsAtEnd values('P-9');

mysql> insert into emptyCellsAtEnd values('');

mysql> insert into emptyCellsAtEnd values('P-8');

使用select语句显示表中的所有记录。查询如下-

mysql> select *from emptyCellsAtEnd;

以下是输出-

+-----------+
| ProductId |
+-----------+
|           |  
| P-1       |
| P-2       |
|           |
| P-3       |
| P-4       |
| P-9       |
|           |
| P-8       |
+-----------+
9 rows in set (0.00 sec)

现在,您可以实施我们开头讨论的查询,以最后放置空单元格。将空单元格放在末尾的查询如下-

mysql> select *from emptyCellsAtEnd
−> order by if(ProductId = '' or ProductId is null,1,0),ProductId;

以下是输出-

+-----------+
| ProductId |
+-----------+
| P-1       |
| P-2       |
| P-3       |
| P-4       |
| P-8       |
| P-9       |
|           |
|           |
|           |
+-----------+
9 rows in set (0.00 sec)