mysql - mysql - 如何按最多两列排序,这两个列在MySQL中可以为空?

标签 mysql sql sorting

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))

如果 salaryminussalaryplus 为 null,这会将它们视为 0,并按两者中较大的一个排序。

关于mysql - mysql - 如何按最多两列排序,这两个列在MySQL中可以为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611490/

相关文章:

javascript - 使用 PHP 和 JavaScript 从数据库中删除数据

mysql - 如何定位查询的最后一行以显示在结果下方? (MySQL)

algorithm - 如何优化我的归并排序算法?

javascript - 如何根据确定的属性值对 JavaScript 中的对象数组进行排序?

mysql - 更改 Docker 容器中的 mysql 密码

sql - SELECT 语句从不同的表中获取所有列

sql - 可以在表中保存和插入 SQL 查询消息吗?

mysql - CONVERT_TZ 函数不起作用 : Time zone data for MySQL

list - Kotlin - 基于对象属性对 MutableList 进行排序

mysql - 错误 1241 操作数应包含 1 列子查询工作日