如何在保留正确顺序的同时在 Postgres 中使用多个不同的 on 语句
How to use multiple distinct on statements in Postgres while retaining the correct order
我有一个 table 的 Postgres 天气预报,看起来像这样
在这里,每 15 分钟同时发布一次风能和太阳能预报。我希望 select 使用 distinct on()
语句从这个 table 获得最新的风能和太阳能预报。但是,当我仅在 time
列上使用它时,它会删除风力预报,因为该预报在太阳能预报前一分钟被丢弃。我试过使用 distinct on(time, forecast)
但不知何故订单被搞乱了,我不再接受最新的 dump_date
(见下文)
如何在多个列上使用 distinct on()
语句同时仍保留顺序?我现在使用的查询是
select
distinct on ("time", "forecast") *
from table
order by "time"
此查询保持动态很重要,因此对 dump_date
进行硬编码对我来说不是一个选项。
我会将 dump_date DESC
添加到 ORDER
SELECT DISTINCT ON (time, forecast)
*
FROM t
ORDER BY time, forecast, dump_date DESC
我有一个 table 的 Postgres 天气预报,看起来像这样
在这里,每 15 分钟同时发布一次风能和太阳能预报。我希望 select 使用 distinct on()
语句从这个 table 获得最新的风能和太阳能预报。但是,当我仅在 time
列上使用它时,它会删除风力预报,因为该预报在太阳能预报前一分钟被丢弃。我试过使用 distinct on(time, forecast)
但不知何故订单被搞乱了,我不再接受最新的 dump_date
(见下文)
如何在多个列上使用 distinct on()
语句同时仍保留顺序?我现在使用的查询是
select
distinct on ("time", "forecast") *
from table
order by "time"
此查询保持动态很重要,因此对 dump_date
进行硬编码对我来说不是一个选项。
我会将 dump_date DESC
添加到 ORDER
SELECT DISTINCT ON (time, forecast)
*
FROM t
ORDER BY time, forecast, dump_date DESC