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

编写SQL查询:按时序匹配连接两表Top5最新时间戳行

需求说明

现有两张表 Table1 和 Table2,均包含 timestamp(时间戳)、query_time(查询时间)列。需要完成以下操作:

  1. 分别从两张表中取出时间戳最新的前5行,并按 timestamp 排序;
  2. 将两表的行按时序一一匹配连接:表1的最新行对应表2的最新行,次新行对应次新行,依此类推。

示例数据

Table1 数据:

timestampquery_time
11
24
36
48
510

Table2 数据:

timestampquery_time
1010
20200
30300
40400
50500

期望连接结果

t1_timestampt1_query_timet2_timestampt2_query_time
111010
2420200
3630300
4840400
51050500
解决方案

可以通过窗口函数 ROW_NUMBER() 为两张表筛选出的前5行添加序号,再通过序号进行连接,实现行的一一匹配:

WITH t1_top5 AS (
    SELECT 
        timestamp AS t1_timestamp,
        query_time AS t1_query_time,
        ROW_NUMBER() OVER (ORDER BY timestamp DESC) AS row_num
    FROM Table1
    ORDER BY timestamp DESC
    LIMIT 5
),
t2_top5 AS (
    SELECT 
        timestamp AS t2_timestamp,
        query_time AS t2_query_time,
        ROW_NUMBER() OVER (ORDER BY timestamp DESC) AS row_num
    FROM Table2
    ORDER BY timestamp DESC
    LIMIT 5
)
SELECT 
    t1.t1_timestamp,
    t1.t1_query_time,
    t2.t2_timestamp,
    t2.t2_query_time
FROM t1_top5 t1
JOIN t2_top5 t2 ON t1.row_num = t2.row_num
ORDER BY t1.row_num DESC;

说明

  1. t1_top5 和 t2_top5 两个公共表表达式分别从两张表中取出时间戳最新的前5行,同时用 ROW_NUMBER() 按时间戳降序(最新在前)生成序号;
  2. 最后通过序号 row_num 将两张表的行一一连接,再按序号降序排列,得到表1最新行对应表2最新行的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:40:03