左外连接 Microsoft excel 查询问题

Posted

技术标签:

【中文标题】左外连接 Microsoft excel 查询问题【英文标题】:Left outer join Microsoft excel query Issue 【发布时间】:2017-02-20 21:20:54 【问题描述】:

我有以下 excel 表格:

表:a

week    Item    qty 

wk1      a      1   
wk2      b      1  
wk3      b      2

和表:w

week    Item    sales 
wk1 a   11 
wk2 b   22 
wk1 b   33 
wk2 b   4 
wk3 b   5

我想应用 LEFT JOIN 以便根据以下查询返回左表 (w) 中的所有行,以及右表 (a) 中的匹配行

SELECT `a$`.week, `a$`.Item, `a$`.qty, `w$`.sales
FROM oj `C:\Users\User\Desktop\test.xlsx`.`w$` `w$`
LEFT OUTER JOIN `C:\Users\User\Desktop\test.xlsx`.`a$` `a$`
    ON `a$`.week = `w$`.week
WHERE `w$`.Item = `a$`.Item

但是我没有得到想要的结果

week    Item    qty sales
wk1 a   1   11
wk2 b   1   4
wk2 b   1   22
wk3 b   2   5

因为缺少以下行

wk1 b       33

有什么想法吗?或建议如何解决此问题?

提前致谢 科斯塔斯

【问题讨论】:

做一个FULL OUTER JOIN。您缺少wk1 b,因为它在Table a 中不存在。删除Where 子句并在Join 语句中添加Item 的比较 【参考方案1】:

您的 where 子句与您的预期结果相矛盾。去掉 where 子句,你会得到你期望的结果。

【讨论】:

【参考方案2】:

你实际上做了内连接而不是外连接。 因为你用过

WHERE w$.Item = a$.Item

首先,您的记录包括销售额为 33。

其次,在这个条件下,您已经删除了 33 的销售记录。

所以,去掉这个条件就没有问题了。

【讨论】:

列被压缩...实际上是 33 的销售额。 @WEI_DBA 我不明白你的意思。但是你的回答和我的回答结果是一样的。因为 w 表具有表中存在的所有行。他问为什么结果表不包括 33 的销售额,所以我回答了为什么他输了。 是的,我以为你的意思是 33 是​​项目编号。 ;-) @WEI_DBA 哦,我现在明白我的错误了。我已将商品更正为销售,谢谢。

以上是关于左外连接 Microsoft excel 查询问题的主要内容,如果未能解决你的问题,请参考以下文章

netezza 左外连接查询性能

如何强制 Hibernate 在组件上使用左外连接进行命名查询?

与子查询相比,为啥左外连接查询给出不同的结果?

对两个 MySQL 查询执行左外连接?

带有子查询的左外连接?

使用子查询改进 MySql 查询左外连接