首先建一个表:
create table grades( stu_id int(20) not null, stu_name varchar(20), class_id int(20), grade int(10) );
查入数据:
insert into table grades(stu_id,stu_name,class_id,grade)
values (11,'czy',201,91),
(17,'czs',201,91), (12,'cz1',201,81), (13,'cza',201,71), (14,'czd',201,61), (15,'czk',201,51), (16,'czl',201,NULL);
使用case when排序:
select stu_name, case when grade > 90 then '优秀' when grade >80 then '中等上' when grade >70 then '中等下' when grade >=60 then '及格' when grade < 60 then '不及格' else '没有成绩'
end as 'rank' from grades
结果显示:
最后的‘czl’显示的是else后面的定义,如果没有else语句则结果是:
此处的NULL并不是表中'czl'的成绩NULL,而是当没有else结尾时,case when语句进行判断时,如果条件都不满足,默认返回NULL。