create table jobs(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
.....
salaryminus INTEGER UNSIGNED DEFAULT NULL,
salaryplus INTEGER UNSIGNED DEFAULT NULL,
.....
);
我想做这样的事情:
Select * from jobs order by maxof(salaryminus, salaryplus) limit 10;
maxof(Null,1000)
应该是 1000,
如何实现maxof
?
最佳答案
如果您知道salaryplus
将始终大于salaryminus
,那么您可以这样做
order by coalesce(salaryplus, salaryminus, 0)
coalesce
将返回第一个不为 null 的值,如果两个值都为 null,则返回(在此示例中)0。
否则,做这样的事情:
order by greatest(ifnull(salaryminus,0), ifnull(salaryplus,0))
如果 salaryminus
和 salaryplus
为 null,这会将它们视为 0,并按两者中较大的一个排序。
关于mysql - mysql - 如何按最多两列排序,这两个列在MySQL中可以为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611490/