SQL中如何连接两个表并保留原始表的全部数据?
问题原因
你当前使用的JOIN默认是内连接(INNER JOIN),仅会返回两张表中purchase_number匹配的行,所以会丢失表x中没有匹配到的记录。
解决方案
要保留左表(原始表x)的全部记录,无论右表y是否有匹配数据,改用左外连接即可(大部分数据库支持省略OUTER关键字,简写为LEFT JOIN),修改后的SQL语句如下:
SELECT x.purchase_number, x.revenue, y.group_id FROM table_x x LEFT JOIN table_y y ON x.purchase_number = y.purchase_number
注意事项
- 这里没有使用
SELECT *,而是显式指定取x表的purchase_number、revenue字段以及y表的group_id字段,避免两张表同名字段冲突导致结果异常 - 左连接逻辑下,x表中没有匹配到y表数据的行,对应的
group_id字段会自动填充为NULL,完全符合你的预期输出要求。
内容的提问来源于stack exchange,提问作者Nancy L
相关产品推荐
相关产品推荐

