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

如何排序并找出各p_areaname与p_direction对应的最新记录

解决方案

要找出每个p_areaname和p_direction组合对应的最新记录,这里以p_date+p_time的时间戳作为判断“最新”的依据,提供两种常用实现方法:

方法一:使用窗口函数ROW_NUMBER()

这是最简洁直观的方式,通过窗口函数给每个分组内的记录按时间倒序编号,取编号为1的记录即可:

SELECT t.*
FROM (
    SELECT *,
           -- 按p_areaname、p_direction分组,每组内按时间倒序排号
           ROW_NUMBER() OVER (PARTITION BY p_areaname, p_direction ORDER BY p_date DESC, p_time DESC) AS rn
    FROM test
) t
WHERE t.rn = 1;

方法二:使用关联子查询

先通过子查询计算每个分组的最新时间,再关联原表匹配对应记录:

SELECT t1.*
FROM test t1
INNER JOIN (
    -- 计算每个分组的最新时间(日期+时间合并为 datetime)
    SELECT p_areaname, p_direction, MAX(p_date + CAST(p_time AS DATETIME)) AS latest_datetime
    FROM test
    GROUP BY p_areaname, p_direction
) t2 ON t1.p_areaname = t2.p_areaname 
    AND t1.p_direction = t2.p_direction 
    AND (t1.p_date + CAST(t1.p_time AS DATETIME)) = t2.latest_datetime;

针对你的测试数据,两种方法都会返回以下结果:

  • it building + 1 对应的最新记录:('adam', '05/10/2022', '11:00','it building', 1)
  • global + 0 对应的最新记录:('adam', '05/10/2022', '11:15','global', 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:10:29