您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

LEFT JOIN返回与INNER JOIN相同的结果

LEFT JOIN返回与INNER JOIN相同的结果

因为您没有使用on子句。更改为:

SELECT a.`BW Parent Number`, a.`Vendor Name`, b.`Parent supplier Name`
  FROM scrubs AS a
  LEFT OUTER JOIN pdwspend AS b
    ON a.`BW Parent Number` = b.`Child supplier ID`
   and b.`BU ID` = 'BU_1'
   AND b.`version` LIKE '%GOV%'
 WHERE a.`year` = 2014

同样,分组依据也没有任何意义。如果您正在汇总某些内容,则可以使用group by子句。

根据您对重复行的评论,这可能是因为名为“ pdwspend”的表的每个“子供应商ID”都有多个行。这是该表上您要与之关联的“ scrubs”表的唯一字段。因此,是的,对于pdwspend上的每个匹配行,您将拥有与第二张表相同的行(该表上可能还有其他列,因此它们实际上不是“重复的”行,您只是没有选择足以说明的列)。

因为您只对选择的列数感兴趣,并且不希望基于这些列“重复”行,所以可以尝试使用以下方法来区分:

(您在注释中输入的查询中出现错误的原因是,因为内联视图(from子句中的子查询)未选择“父供应商名称”字段,所以是的,在该字段中不存在内联视图,因为您没有将其添加到该内联视图的选择列表中。

     select a.`BW Parent Number`, a.`Vendor Name`, b.`Parent supplier Name`
       from scrubs a
  left join ( select distinct `Child supplier ID`, `Parent supplier Name`
                         from pdwspend
                        where `BU ID` = 'BU_1'
                          and `version` LIKE '%GOV') b
         on a.`BW Parent Number` = b.`Child supplier ID`
      where a.`year` = 2014
其他 2022/1/1 18:27:55 有380人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶