LeetCode--175. 组合两个表

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 测试用例

输入:
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. 员工奖金

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值