左外连接 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 查询问题的主要内容,如果未能解决你的问题,请参考以下文章