MySQL-按条件排序
我正在处理一个问题,该问题将按照以下规则对输出进行排序: 如果g.等级>8,则MySQL-按条件排序,mysql,sql,Mysql,Sql,我正在处理一个问题,该问题将按照以下规则对输出进行排序: 如果g.等级>8,则 order by g.grade asc, s.name asc 如果g.grade使用案例,当时: ORDER BY CASE WHEN g.grade > 8 THEN g.grade ELSE (0 - g.grade) END asc, CASE WHEN g.grade > 8 THEN s.name ELSE s.marks END asc 您的第二个大小写表达式有问题。
order by g.grade asc, s.name asc
如果g.grade使用
案例,当时:
ORDER BY CASE WHEN g.grade > 8 THEN g.grade ELSE (0 - g.grade) END asc,
CASE WHEN g.grade > 8 THEN s.name ELSE s.marks END asc
您的第二个大小写表达式有问题。一个分支生成一个varchar
,而另一个分支生成一个数字。这在大多数RDBMS中不起作用,即使它在MySQL中起作用,也应该避免。@TimBiegeleisen嗯,你是对的,我正在考虑如何解决这个问题。我想不出办法,但好消息是你的答案可能对MySQL起作用。@TimBiegeleisen forMySQL
,它起作用,我已经测试过了。但是sqlserver
并不完全有效。也许应该对其他RDBMS使用动态sql。
ORDER BY CASE WHEN g.grade > 8 THEN g.grade ELSE (0 - g.grade) END asc,
CASE WHEN g.grade > 8 THEN s.name ELSE s.marks END asc