题目
编写一个SQL查询来报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为空 null 。
以 任意顺序 返回结果表。
表: Person
表: Address
示例:
输入:
Person表:
Address表:
输出:
解释:
地址表中没有 personId = 1 的地址,所以它们的城市和州返回 null。 addressId = 1 包含了 personId = 2 的地址信息。
解题思路
1.首先我们先浏览一下题目以及所给出的两个表,我们可以看出,两个表分别是(person表)记录人的姓名信息和(Address表)记录人的住址信息
2.题目要求我们通过person表和Addre表查出(FirstName,LastName,city,state)这四个信息,因为所要查询的信息是两个表的列名,所以我们要进行多表查询。
3.从示例解释中我们可以看出,并不是每个人都有地址信息,有的人可能没有地址信息所以查询到的 city,state 就会为空,但是题目要求查询所有人,我们要保留person表中的全部数据,因此我们要使用左连接进行查询(left join)
4.Address表中的personid是person表中的外键,两个表通过personid产生连接,所以我们要使 Person.personId = Address.personId
代码实现
select FirstName, LastName, city, state from Person left join Address on Person.personId = Address.personId;