我有两张table如下:
table 1 table 2
id name count1 | id name count2
1 x 2 1 x 1
2 y 3 4 y 1
3 z 1 5 z 2
预期结果:
id name count1 count2
1 x 2 1
2 y 3 0
3 z 1 0
4 y 0 1
5 z 0 2
已尝试sql查询:
SELECT table1.id as id, table1.name as name,
table1.count1 as count1, table2.count2 as count2
FROM table1
LEFT JOIN table2 on table1.id = table2.id and table1.name = table2.name
我觉得这是错误的,因为我没有得到预期的结果。因为我是新来的,所以我不确定该使用哪个join。如果您能帮上忙,我们将不胜感激。
非常感谢你
2条答案
按热度按时间r1wp621o1#
你可以用
UNION ALL
然后在主查询中聚合为zzoitvuj2#
你可以使用
full join
:如果您的数据库不支持
full join
,那么你基本上有两个选择。一个只使用LEFT JOIN
:第二种方法是使用
UNION ALL
,不是UNION
:我不知道“规范”方法在哪里使用
UNION
来自。我认为这是一个关于亲近的思考练习。但是,这是一个非常糟糕的解决方案,原因如下:UNION
增加了删除重复项的额外开销。而这不是FULL JOIN
功能。缺乏
WHERE
第二个查询上的子句确保如果存在任何匹配项,则存在重复项。使用
UNION
删除每个子查询中的重复项。不管是否可取,这都不是问题所在FULL JOIN
作品。