You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL实现:按创建时间筛选各预报时间对应的最新预报记录

天气预报表取最新预报记录SQL实现方案

方案1:窗口函数实现(推荐)

适用于支持窗口函数的主流数据库(MySQL 8.0+、PostgreSQL、SQL Server、Oracle等),性能更优写法简洁:

WITH ranked_forecasts AS (
    SELECT 
        id,
        forecast_timestamp,
        created_timestamp,
        -- 按预报时间分组,分组内按创建时间倒序排序
        ROW_NUMBER() OVER (PARTITION BY forecast_timestamp ORDER BY created_timestamp DESC) AS rn
    FROM forecasts
)
-- 取每个分组排序第一的最新记录
SELECT id, forecast_timestamp, created_timestamp
FROM ranked_forecasts
WHERE rn = 1;

注意:如果同一预报时间下存在多条创建时间完全相同的记录,需要全部返回时将ROW_NUMBER()替换为RANK()即可。


方案2:关联子查询实现(兼容低版本数据库)

适用于不支持窗口函数的低版本数据库(如MySQL 5.x):

SELECT f.id, f.forecast_timestamp, f.created_timestamp
FROM forecasts f
-- 先查询每个预报时间对应的最大创建时间
INNER JOIN (
    SELECT forecast_timestamp, MAX(created_timestamp) AS max_created
    FROM forecasts
    GROUP BY forecast_timestamp
) t ON f.forecast_timestamp = t.forecast_timestamp AND f.created_timestamp = t.max_created;

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:18:03