175.组合两个表
一、题目描述:
表1:Person
列名 | 类型 |
---|---|
PersonId | int |
FirstName | varchar |
LastName | varchar |
PersonId是上表主键
表2:Address
列名 | 类型 |
---|---|
AddressId | int |
PersonId | int |
City | varchar |
State | varchar |
AddressId是上表主键
编写一个SQL查询,满足条件:无论person是否有地址信息,都需要基于上述两表提供person的以下信息:
FirstName, LastName, City, State
二、题目解析
方法:使用outer join
算法
因为表Address中的personId是表person的外关键字,所以我们可以连接这两个表来获取一个人的地址信息。
考虑到可能不是每个人都有地址信息,我们应该使用outer join而不是默认的inner join。
三、代码实现
SELECT
a.FirstName, a.LastName, b.City, b.State
FROM
Person a
LEFT JOIN
Address b
ON
a.PersonId = b.PersonId
注意:如果没有某个人的地址信息,使用where子句过滤记录将失败,因为它不会显示姓名信息。