[英]MySQL left join on two columns
我有两个面板数据形式的表格,我想加入他们的 id 和 year。
表表table1
id year col1
---------------------
1 2008 1674.9240
1 2009 1714.4611
1 2010 2470.0510
1 2011 3524.2649
1 2012 3536.4431
1 2013 3694.0000
1 2014 3812.0000
1 2015 4788.0000
1 2016 8316.0000
1 2017 8036.0000
1 2018 10899.0000
1 2019 11092.0000
table2
id year col2
----------------
1 2010 2
1 2013 2
1 2016 15
1 2017 6
但是右表丢失了一些数据,所以我想离开它们,这样我就可以得到这样的结果:
id year col1 col2
-----------------------------
1 2008 1674.9240
1 2009 1714.4611
1 2010 2470.0510 2
1 2011 3524.2649
1 2012 3536.4431
1 2013 3694.0000 2
1 2014 3812.0000
1 2015 4788.0000
1 2016 8316.0000 15
1 2017 8036.0000 6
1 2018 10899.0000
1 2019 11092.0000
我试过了,就像其他答案说的那样
select a.id, a.year, a.col1, b.col2 from table1 a
left join table2 b on a.id=b.id and a.year=b.year;
但结果却是这样
id year col1 col2
----------------------------
1 2010 2470.0510 2
1 2013 3694.0000 2
1 2016 8316.0000 15
1 2017 8036.0000 6
它不应该是这样的,因为另一个答案显示了不同的结果。
MySQL 版本是 MySQL 8.0.22,在 macOS Big Sur 11.1 beta 上运行,采用 Apple M1 芯片。
您的查询是正确的:
select a.id, a.year, a.col1, b.col2
from table1 a left join
table2 b
on a.id = b.id and a.year = b.year;
根据定义,这将返回a
所有行,即使没有匹配项。 这是一个 db<>fiddle。
也许还有其他事情正在发生——例如过滤掉不匹配项的where
子句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.