mysq对存在null值的字段排序
Posted 听歌敲代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysq对存在null值的字段排序相关的知识,希望对你有一定的参考价值。
1.建立学生表,建表sql如下:
create table student(id int,name varchar(20),age int);
2.插入几条数据,包括id字段值为null的
insert into student values(1,\'张三\',10),(2,\'李四\',20),(3,\'王五\',29),(null,\'赵六\',30),(null,\'周琦\',40);
3.我们查询下,可以看到存在id字段为空的值:
4.对学生表按id排序
方法一:
select * from student order by -id desc;
方法二:
select * from student order by isnull(id),id;
方法三:
select * from student order by coalesce(id,999999999999); /*(coalesce(id,999999999999)表示id为空时,返回999999999999这个值)*/
coalesce:返回参数中的第一个非空表达式(从左向右)
在mysql中没有nvl()函数, 我们用coalesce()来代替。coalesce相比nvl优点是,coalesce中参数可以有多个,而nvl()中参数就只有两个。
当然,在oracle中也可以使用 case when....then....else......end(比较强悍,case when 后可以跟表达式)
推荐使用方法二。
以上是关于mysq对存在null值的字段排序的主要内容,如果未能解决你的问题,请参考以下文章