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

关于SQL JOIN中ON子句Cur.orderyear=Prv.orderyear+1的作用疑问

解析ON子句Cur.orderyear = Prv.orderyear + 1的逻辑

首先纠正一个误区:ON子句不是只能做等值匹配,它支持任何能返回布尔值(真/假)的条件,这个等式就是用来把「当前年份的记录」和「上一年的记录」关联起来的。

你之前搞反了等式的推导方向:当Cur的orderyear是2021时,等式2021 = Prv.orderyear + 1的解是Prv.orderyear = 2020——也就是说,这条2021年的Cur记录,会匹配Prv子查询里所有orderyear为2020的记录。

举个实际场景的例子:

  • Cur子查询统计了2021年的客户数、订单量等数据
  • Prv子查询统计了2020年的对应数据
    通过这个ON条件,就能把两年的数据行一对一关联起来,这样你就能直接计算「2021年客户数 - 2020年客户数」的同比增量,或者做增长率计算。

另外用LEFT OUTER JOIN的原因是:如果Cur里存在最早的年份(比如2019年,而Prv里没有2018年的数据),这时候Prv对应的字段会返回NULL,你可以在后续计算里把这种情况处理为同比增长为0,或者单独标记出来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 22:41:01