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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。