文章目录
1 题目描述
表: Person
+-------------+---------+
| 列名         | 类型     |
+-------------+---------+
| PersonId    | int     |
| FirstName   | varchar |
| LastName    | varchar |
+-------------+---------+
personId 是该表的主键 (具有唯一值的列).
 该表包含一些人的 ID 和他们的姓和名的信息.
表: Address
+-------------+---------+
| 列名         | 类型    |
+-------------+---------+
| AddressId   | int     |
| PersonId    | int     |
| City        | varchar |
| State       | varchar |
+-------------+---------+
addressId 是该表的主键 (具有唯一值的列).
 该表的每一行都包含一个 ID = PersonId 的人的城市和州的信息
编写解决方案, 报告 Person 表中每个人的姓, 名, 城市和州. 如果 personId 的地址不在 Address 表中, 则报告为 null .
以任意顺序 返回结果表.
2 测试用例
示例 1:
 输入:
 Person 表:
+----------+----------+-----------+
| personId | lastName | firstName |
+----------+----------+-----------+
| 1        | Wang     | Allen     |
| 2        | Alice    | Bob       |
+----------+----------+-----------+
Address 表:
+-----------+----------+---------------+------------+
| addressId | personId | city          | state      |
+-----------+----------+---------------+------------+
| 1         | 2        | New York City | New York   |
| 2         | 3        | Leetcode      | California |
+-----------+----------+---------------+------------+
输出:
+-----------+----------+---------------+----------+
| firstName | lastName | city          | state    |
+-----------+----------+---------------+----------+
| Allen     | Wang     | Null          | Null     |
| Bob       | Alice    | New York City | New York |
+-----------+----------+---------------+----------+
解释:
 地址表中没有 personId = 1 的地址, 所以它们的城市和州返回 null.
 addressId = 1 包含了 personId = 2 的地址信息
3 解题思路
- 如果 personId的地址不在Address表中, 则报告为null, 可以想到使用左外连接Person p left join Address a on p.personId = a.personId
 MySQL 连接的详细介绍: MySQL Join 类型
3.1 解法 1:
select p.firstName, p.lastName, a.city, a.state
from Person p left join Address a on p.personId = a.personId
4 相似题目
LeetCode–577. 员工奖金










