小编典典

如何在MySQL中最多可以为null的两列排序?

sql

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


阅读 233

收藏
2021-03-23

共1个答案

小编典典

如果您知道该值salaryplus始终大于salaryminus,则可以执行

order by coalesce(salaryplus, salaryminus, 0)

coalesce 将返回不为null的第一个值;如果两个值均为null,则返回0(在此示例中)。

否则,请执行以下操作:

order by greatest(ifnull(salaryminus,0), ifnull(salaryplus,0))

这将同时治疗salaryminussalaryplus为0,如果是空的,将被两个较大的订单。

2021-03-23