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

如何编写SQL查询筛选右列timestamp早于前一行值的对应行?

可用查询语句实现方案

你可以使用SQL窗口函数LAG实现需求,该语法适配MySQL 8.0+、PostgreSQL、SQL Server、Oracle等绝大多数主流数据库,写法如下:

WITH data_with_prev AS (
    SELECT
        *,
        -- 按左侧排序列取上一行的timestamp值
        LAG(右侧时间戳列名) OVER (ORDER BY 左侧排序列名) AS prev_row_timestamp
    FROM 你的表名
)
SELECT * 
FROM data_with_prev
WHERE 右侧时间戳列名 < prev_row_timestamp;

你使用时替换三处占位符即可:

  • 替换你的表名为实际的表名称
  • 替换左侧排序列名为你提到的已经完成升序排序的左侧列的实际名称
  • 替换右侧时间戳列名为你要校验的timestamp列的实际名称

如果你使用的是不支持窗口函数的低版本数据库(如MySQL 5.7及更早版本),可以用自关联的写法实现同等效果:

SELECT curr.*
FROM 你的表名 curr
INNER JOIN 你的表名 prev 
  ON prev.左侧排序列名 = (SELECT MAX(左侧排序列名) FROM 你的表名 WHERE 左侧排序列名 < curr.左侧排序列名)
WHERE curr.右侧时间戳列名 < prev.右侧时间戳列名;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:03