sql - 我正在尝试使用很少的条件使用左连接,我得到的结果是内连接而不是左连接。请更正我在 squirrel-sql 中的查询
问题描述
我希望所有记录使用表中的左连接;le 1、表 2 和表 3 用于 4 月以及城市 = 伦敦。我期待最终结果中有 2 条记录,第一条记录 = 伦敦,第二条记录为空或空白。
Table1 Table2 table3
id amt month id ac month ac city month
A123 400 April A123 ac11 April ac11 london April
A124 500 April A124 ac12 April ac12 milan April
A123 600 May A123 ac11 May ac11 london May
A124 700 May A124 ac12 May ac12 milan May
Desired Result
Table3
id amt ac city month
A123 400 ac11 london April
A124 500 ac12 April
Actual Result
Table3
id amt ac city month
A123 400 ac11 london April
我正在使用 squirrel sql 并没有使用以下查询获得所需的结果。让我知道如何纠正它。
select a.id, a.amt, b.ac, c.city, a.month from table1 as a
left join table2 as b on a.id=b.id
left join table3 as c on b.ac=c.ac
where a.month = 'April' and b.month = 'April' c.month = 'April'
and c.city = 'london'
解决方案
您无法在 where 子句中过滤以左连接(在您的情况下是表 b 和 c)中连接的表。需要在这些表上应用的每个过滤器都应该放在 ON 子句中,否则您的简单连接将成为内部连接。例如
left join table2 as b on (a.id = b.id and b.month = ‘April’)
推荐阅读
- ios - 使用 SceneDelegate 在 AppDelegate 中设置 UIWindow
- list - Haskell 中的“无法将类型 '[]' 与 'IO' 匹配”错误
- javascript - 在 javascript 中更改按钮背景时在 HTML 中丢失悬停和活动样式
- javascript - ReactJS:在代码镜像编辑器顶部显示另一个 UI 元素
- javascript - 如何从 UpdatePanel 回调中调用 javascript 函数(带有更改的主体)?
- c# - 如何在 UWP C# 中将协议激活链接复制到剪贴板
- javascript - 如何使用javascript过滤陀螺仪的噪声
- regex - 正则表达式在 URL 的动态部分之后排除结果
- assembly - 装配中的链表节点(炸弹实验室第 6 阶段)
- java - 我有 Java rest api 异常 java.lang.IllegalArgumentException