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

LEFT JOIN未返回预期结果求助:需保留左表全量数据并匹配指定行

问题解决:LEFT JOIN保留左表全部数据并过滤右表匹配项

你的问题核心是WHERE子句的过滤时机错误:LEFT JOIN后用WHERE过滤右表字段,会把左表中那些匹配到右表但不符合TradeableCode='MSFT'的行直接剔除,仅保留完全无匹配的左表行,最终导致左表数据不全。

正确的做法是把右表的过滤条件整合到ON子句中,在关联阶段就筛选右表符合要求的数据,确保左表所有行都被保留:

SELECT 
    tblCalendar.dDate, tblCalendar.dDay, 
    tblDailyData.TradeableDate, tblDailyData.TradeableCode
FROM 
    tblCalendar 
LEFT JOIN 
    tblDailyData ON tblCalendar.[dDate] = tblDailyData.[TradeableDate]
                AND tblDailyData.TradeableCode = "MSFT"
ORDER BY 
    tblCalendar.dDate;

逻辑说明

  • ON子句:在JOIN关联时就筛选右表数据,仅将右表中日期匹配且Code为MSFT的行与左表关联,左表无匹配的行依然保留,对应右表字段显示NULL。
  • 原WHERE子句:JOIN完成后再过滤结果集,会把左表中匹配到右表但Code非MSFT的行(此时TradeableCode不为NULL,不满足WHERE的任一条件)直接删除,造成左表数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:04:53