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

如何筛选前一行值为'T'且当前行值为'C'的ID数据行?

可以实现这类筛选需求

要筛选出当前行column1值为'C'且紧邻前一行column1值为'T'的记录ID,核心是利用窗口函数获取前一行的字段值,再进行条件过滤。

通用SQL实现方案

大多数主流数据库(MySQL 8.0+、PostgreSQL、SQL Server、Oracle等)都支持LAG()窗口函数,它可以获取当前行之前指定偏移量的行数据。假设你的表名为your_table,SQL语句如下:

SELECT ID
FROM (
    SELECT 
        ID,
        column1,
        -- 获取当前行的前一行column1值,通过column2确保行顺序符合业务逻辑
        LAG(column1) OVER (ORDER BY column2) AS prev_column1
    FROM your_table
) AS subquery
WHERE column1 = 'C' AND prev_column1 = 'T';

关键说明

  • ORDER BY column2:这里用column2(即示例中的日期字段)来保证行的顺序是按时间先后排列的,这样才能准确匹配紧邻的前一行。如果你的表有其他更合适的排序依据(比如自增主键),可以替换为对应的字段。
  • 子查询先计算每行对应的前一行column1值,外层查询再筛选符合条件的行并提取ID。

针对示例表的执行结果

根据你提供的示例数据,执行上述SQL后会返回ID为3的记录——因为ID=3的最后一行是'C',它的前一行是'T',符合筛选条件;而ID=1的'C'前一行是'J',ID=2的'C'前一行是'J',均不满足条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:50:27