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

SQL查询:如何筛选存在Col2=1且后续连续行是2的ID?

正确筛选符合条件ID的SQL解法

要筛选满足以下两个条件的ID:

  • 该ID对应的Col2字段存在值1
  • 同一ID下,值1所在行的下一行Col2值必须为2

直接用窗口函数LEAD()就能高效解决这个问题,它可以直接获取同一分组内当前行的下一行数据。

核心SQL代码

SELECT DISTINCT t.ID
FROM (
    SELECT 
        ID,
        Col2,
        -- 按ID分组,每组内按排序字段排序,获取下一行的Col2值
        LEAD(Col2) OVER (PARTITION BY ID ORDER BY [排序字段]) AS next_Col2
    FROM your_table
) t
-- 筛选出当前行Col2是1,且下一行Col2是2的记录
WHERE t.Col2 = 1 AND t.next_Col2 = 2;

关键说明

  1. 必须指定排序字段:数据库表本身是无序的,「下一行」的定义依赖于明确的排序规则(比如自增ID、创建时间、业务顺序号等),请把代码里的[排序字段]替换成你表中用来确定行顺序的实际列名。
  2. DISTINCT去重:同一个ID可能存在多组"1后跟2"的情况,用DISTINCT确保每个符合条件的ID只返回一次。

为什么之前的左连接会返回所有ID?

左连接的逻辑是保留左表的所有行,如果你没有在关联条件或WHERE子句中严格过滤掉不满足"1后跟2"的ID,就会导致所有ID都被保留。比如只是简单关联同ID的行,但没限定下一行的顺序和值,就无法正确筛选。

示例验证

假设你的样本表数据如下(带排序字段):

IDCol2row_num
131
112
123
211
232
321
312
323

运行上述SQL后,会得到结果:1和3,符合期望输出;ID=2因为1后面是3,会被排除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:50:29