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
分析:因为两个表想要组合有笛卡尔乘积,但是题目说了,因为不管是否有person地址,都要提供person数据,也就是说,有null的哪一个元祖也要留下,这个时候,左外连接是最好的选择,但是直接做连接也是可以通过的
select FirstName, LastName,City,State
from Person left join Address
on Person.PersonId = Address.PersonId;