LeetCode-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

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

 

 
posted @ 2019-01-17 14:29  凉初  阅读(324)  评论(0编辑  收藏  举报