题目描述:
表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
SQL架构:
1 Create table Person (PersonId int, FirstName varchar(255), LastName varchar(255)); 2 Create table Address (AddressId int, PersonId int, City varchar(255), State varchar(255)); 3 Truncate table Person; 4 insert into Person (PersonId, LastName, FirstName) values ('1', 'Wang', 'Allen'); 5 Truncate table Address; 6 insert into Address (AddressId, PersonId, City, State) values ('1', '2', 'New York City', 'New York');
解题思路:
题目要求不管有没有地址信息,都需要返回person的信息,使用left join连接即可
解决方案:
select a.FirstName, a.LastName, b.City, b.State from Person a left join Address b on a.PersonId = b.PersonId