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

如何编写最优单查询,按ID分组获取各列非空时的最新timestamp

按ID分组获取各列非空时的最新时间戳最优SQL实现

直接用条件聚合就能实现单SQL最优查询,不需要拆成多个查询再union,这种方法只需要扫描一次表,性能比union方案更优。

针对你的表结构,SQL写法如下:

SELECT 
    id,
    MAX(CASE WHEN col1 IS NOT NULL THEN timestamp END) AS latest_col1_ts,
    MAX(CASE WHEN col2 IS NOT NULL THEN timestamp END) AS latest_col2_ts
FROM your_table
GROUP BY id;

逻辑说明

  • 用CASE语句过滤出对应列非空的行,仅保留这些行的timestamp
  • 对每个id分组后,用MAX()取过滤后的最大时间戳,就是该列非空时的最新时间
  • 对比union方案:不需要多次查询表再合并结果,减少了IO开销,数据量越大优势越明显

用你的示例数据测试,查询结果会是:

idlatest_col1_tslatest_col2_ts
AT1T4
BT3T2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:12:06