sql - PostgreSQL 按两列排序,最后可为空

标签 sql postgresql sql-order-by

我有 table :

<表类=“s-表”> <标题> id 日期 奖金 <正文> 1 2022-03-10 16:11:06.445559 6000 2 2022-03-15 16:11:06.445559 4000 3 2022-03-20 16:11:06.445559 空 4 2022-03-25 16:11:06.445559 7000 5 2022-03-30 16:11:06.445559 空

我需要使用 PostgreSQL 语法按日期和奖励列对行进行排序。首先应该是具有不可空奖金的最新(按日期排序)行。然后应该是按日期排序的可空奖金的行(也是最新的在前) 结果应该是下一个:

<表类=“s-表”> <标题> id 日期 奖金 <正文> 4 2022-03-25 16:11:06.445559 7000 2 2022-03-15 16:11:06.445559 4000 1 2022-03-10 16:11:06.445559 6000 5 2022-03-30 16:11:06.445559 空 3 2022-03-20 16:11:06.445559 空

最佳答案

SELECT * 
FROM table
ORDER BY
    bonus IS NULL ASC,
    date DESC;

bonus IS NULL 是一个 bool 值,您可以根据它进行排序。在我看来,它比 CASE

更干净(至少更短)

关于sql - PostgreSQL 按两列排序,最后可为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71586348/

相关文章:

xml - 优化 postgresql 9.6 中的批量 xml 数据插入

php - mysql 结果首先显示一些产品,然后显示其余的

MYSQL:SELECT DISTINCT 仅显示唯一的行

sql - 创建全局声明

c# - 为什么 Windows 窗体在 C# 中加载时会卡住?

postgresql - Sequelize模型不区分大小写

php - PostgreSQL 和 PHP 表单

MYSQL高级搜索-使用LIKE运算符进行排序

mysql - 查看[时间长度]是否可用于多行预订的最佳方法是什么?

mysql - 检查 MySQL 表结果中是否存在我的 ID