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

关于SQL中ON子句的疑问:LEFT JOIN条件x.Id+1=y.Id如何工作?

理解SQL中的ON x.Id +1 = y.Id条件

这段SQL是自连接操作——把Weather表自己和自己关联,x和y是给同一张表起的别名,用来区分两个不同的"副本"。

ON x.Id +1 = y.Id的作用

这个条件的核心是让x表中的每一行,和y表中Id恰好比它大1的行配对:

  • 当x表某行的Id是n,就会找到y表中Id为n+1的行,把这两行拼接成一条记录。
  • 如果y表中不存在Id为n+1的行(比如x是最后一行Id),LEFT JOIN会保留x的行,但y的所有字段会是NULL。

结合整体SQL逻辑

再看后面的WHERE x.Temperature < y.Temperature,就是从配对好的记录里,筛选出**前一天(x对应行)温度低于后一天(y对应行)**的情况,最后返回y的Id——也就是温度升高那天的Id。

举个实际数据例子更清楚:
假设Weather表有以下数据:

IdTemperature
110
215
312
420

自连接后的配对记录(符合ON条件的):

  • x行(1,10) ↔ y行(2,15):10<15,符合WHERE条件,返回y.Id=2
  • x行(2,15) ↔ y行(3,12):15>12,不符合
  • x行(3,12) ↔ y行(4,20):12<20,符合,返回y.Id=4
  • x行(4,20):找不到y.Id=5的行,y字段全为NULL,WHERE条件不成立,被过滤

最终查询结果就是2和4。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:50:48