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

为何Right Join无法获取West区域?SQL查询问题求助

问题原因及解决方案

原因分析

你写的查询里,WHERE Distributor = 'ACE'是在RIGHT JOIN执行完成后才做的过滤。由于West区域没有ACE经销商的记录,RIGHT JOIN后这条区域对应的rs.Distributor值是NULL,而NULL和'ACE'不匹配,所以这条记录被WHERE条件直接过滤掉了,导致你看不到West区域。

解决方法

方法一:将过滤条件移至JOIN的ON子句

把Distributor = 'ACE'放到关联条件里,这样在关联阶段就只匹配ACE的记录,RIGHT JOIN会保留CTE中的所有区域,没有ACE的区域对应字段会显示NULL:

WITH cte as (
              SELECT distinct region 
              FROM #RegionSales )

SELECT cte.Region, rs.Distributor, rs.Sales
FROM      #RegionSales as rs
RIGHT JOIN cte                    ON rs.Region = cte.Region AND rs.Distributor = 'ACE'

方法二:改用LEFT JOIN(更直观)

以CTE(包含所有区域)为主表,左关联#RegionSales中ACE的记录,确保所有区域都被保留:

WITH cte as (
              SELECT distinct region 
              FROM #RegionSales )

SELECT cte.Region, rs.Distributor, rs.Sales
FROM cte
LEFT JOIN #RegionSales as rs ON cte.Region = rs.Region AND rs.Distributor = 'ACE'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:45:37