MySQL中order by排序将NULL排在最前/后面

NULL的意思表示什么都不是,或者理解成“未知”也可以,它与任何值比较的结果都是false
注意:
默认情况下,MySQL会认为NULL值比其他类型的数据小, 也就是说:在order by排序的时候,NULL是最小的。

前提:测试数据

id age name
1 12 张三
2 32 李四
3 22 王五
4 NULL 赵六
5 12 杨七

ASC正序排序

ASC默认NULL值是在最前面的

select * from user order by age asc;
执行结果:
id age name
4 NULL 赵六
1 12  张三
5 12  杨七
3 22  王五
2 32  李四

要想ASC排序让NULL在最后面,写法如下:

select * from user order by age is null asc ,age asc;
执行结果:
id age name
1 12  张三
5 12  杨七
3 22  王五
2 32  李四
4 NULL 赵六

DESC降序排序

默认NULL值是在最后面的

select * from user order by age desc;
执行结果:
id age name
2 32  李四
3 22  王五
1 12  张三
5 12  杨七
4 NULL 赵六

要想DESC排序让NULL在最前面,写法如下:

select * from user order by age is null desc ,age desc;
执行结果:
id age name
4 NULL 赵六
2 32  李四
3 22  王五
1 12  张三
5 12  杨七

你可能感兴趣的:(Mysql,mysql,排序算法,数据库,sql,java)