首页 > 解决方案 > Postgresql - 按 DESC 排序不起作用

问题描述

我有一个这样的 sql 查询。

select
SUM(balance.amount) as amount
from "provider_games"
left join "balance" on "balance"."game_id" = "provider_games"."game_id"
group by "provider_games"."game_id"
order by "amount" desc limit 5

我的余额表包括:

game_id | amount
245 - 146.00
244 - 5013.00

当我进行“order by desc”时,结果不正确:

amount
null
null
null
null
null

标签: sqlpostgresqlsql-order-by

解决方案


order by ... desc将 NULL 值排序到顶部。当您将结果限制为 5 行时,您只会看到 NULL 值。

解决这个问题的一种方法是让 Postgres 将 NULL 值排序到最后:

order by amount desc nulls last
limit 5

由于您显然对 NULL 值不感兴趣,因此您也可以将外部联接更改为内部联接,那么您很可能根本不会获得任何 NULL 值。


推荐阅读