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

SQL左连接逻辑疑问:b_Seq_Number为何呈现增1结果?

SQL LEFT JOIN 逻辑解析

先拆解你的连接条件:a."Seq_Number" = b."Seq_Number" - 1,这个等式可以变形为 b."Seq_Number" = a."Seq_Number" + 1。这意味着:

  • 对于src a中的每一行,SQL会在src b里寻找Seq_Number值比当前a行大1的记录
  • 如果找到,就把b的对应字段值返回;找不到的话(比如a是最大的Seq_Number),b的字段会返回NULL

实际示例说明

假设src表的Seq_Number字段有0、1、2三条数据:

  • 当a行的Seq_Number=0时,连接条件匹配b行的Seq_Number=0+1=1,返回的b_Seq_Number=1
  • 当a行的Seq_Number=1时,匹配b行的Seq_Number=1+1=2,返回的b_Seq_Number=2
  • 当a行的Seq_Number=2时,找不到满足b."Seq_Number"=3的记录,所以b_Seq_Number为NULL

这就是你看到“实际却是增1结果”的原因——你的条件逻辑是让b的Seq_Number比a大1,而非你预期的b比a小1。

修正逻辑(达成预期结果)

如果要实现“a第1行对应b的0、第2行对应b的1”,需要把连接条件改成:

a."Seq_Number" = b."Seq_Number" + 1

或者等价写法:

b."Seq_Number" = a."Seq_Number" - 1

这样就能让a的每一行匹配到b中Seq_Number比自己小1的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:52:08