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

隐式Join正常运行但显式Join无结果,请求技术协助

问题排查:显式JOIN无结果返回的原因

核心问题分析

你写的显式JOIN语句里,ON w1.id = w2.id这一条件完全错误:

  • 每个id对应唯一的一条记录,w1.id = w2.id意味着你在把每条记录和它自己做连接
  • 同一条记录的recorddate完全相同,Datediff(w1.recorddate,w2.recorddate)结果为0,永远满足不了=1的条件,所以最终没有任何数据返回

另外你提供的隐式JOIN语句里还有个笔误:需求是找温度高于前一天的记录,但你写的是w1.temprature = w2.Temprature,这会筛选出温度和前一天相等的记录,和需求不符。

纠正后的显式JOIN写法

把日期差的判断放在ON子句中(这才是显式JOIN的正确用法),同时修正温度条件:

Select w1.id 
from weather w1 
inner join weather w2 
  on Datediff(w1.recorddate, w2.recorddate) = 1 
where w1.temprature > w2.Temprature

补充说明

你之前的隐式JOIN写法(无ON子句的JOIN)本质是交叉连接(CROSS JOIN),会生成两张表所有行的笛卡尔积,再通过WHERE条件过滤结果。虽然能得到正确结果,但交叉连接性能极差,数据量大时会严重拖慢查询,更推荐用显式JOIN并在ON子句中指定连接条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:07:03