首页 > 解决方案 > 我正在尝试使用很少的条件使用左连接,我得到的结果是内连接而不是左连接。请更正我在 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'

标签: sqlsquirrel-sql

解决方案


您无法在 where 子句中过滤以左连接(在您的情况下是表 b 和 c)中连接的表。需要在这些表上应用的每个过滤器都应该放在 ON 子句中,否则您的简单连接将成为内部连接。例如

left join table2 as b on (a.id = b.id and b.month = ‘April’)

推荐阅读