175. 组合两个表

题目地址:https://leetcode-cn.com/problems/combine-two-tables/
  • 表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

一开始我想到的是select 做一次关联,表 Person中的PersonId如果和 Address中的PersonId如果相等就能够显示出来。

select p.FirstName,p.LastName,ad.City,ad.State 
from Person p,Address ad 
where p.PersonId=ad.PersonId

但是我提交之后发现这是错误的。我也看到很多人在评论区里面去问,没有回答,所以索性自己动手,建了一下表,对比标准答案。


Person表

Address表

查询结果

正确结果

发现我这种方式实际会过滤掉没有personid对应的结果,要想让左边的person全部都留下来要用left join.

select FirstName, LastName, City, State
from Person left join Address
on Person.PersonId = Address.PersonId

你可能感兴趣的:(175. 组合两个表)