LeetCode--175. 组合两个表

文章目录

  • 1 题目描述
  • 2 测试用例
  • 3 解题思路
    • 3.1 解法 1:
  • 4 相似题目

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 解题思路

  1. 如果 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. 员工奖金

你可能感兴趣的:(MySQL,LeetCode,leetcode,mysql)