前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >☆打卡算法☆LeetCode 175. 组合两个表 算法解析

☆打卡算法☆LeetCode 175. 组合两个表 算法解析

作者头像
恬静的小魔龙
发布2022-08-07 10:47:39
2890
发布2022-08-07 10:47:39
举报
文章被收录于专栏:Unity3D
大家好,我是小魔龙,Unity3D软件工程师,VR、AR,虚拟仿真方向,不定时更新软件开发技巧,生活感悟,觉得有用记得一键三连哦。

一、题目

1、算法题目

“编写一个SQL查询来报告包中每个人的信息,如果id不在表中,则报告显示为空,返回结果表。”

题目链接:

来源:力扣(LeetCode)

链接: 175. 组合两个表 - 力扣(LeetCode)

2、题目描述

表: Person

代码语言:javascript
复制
+-------------+---------+
| 列名         | 类型     |
+-------------+---------+
| PersonId    | int     |
| FirstName   | varchar |
| LastName    | varchar |
+-------------+---------+

personId 是该表的主键列。 该表包含一些人的 ID 和他们的姓和名的信息。  

表: Address

代码语言:javascript
复制
+-------------+---------+
| 列名         | 类型    |
+-------------+---------+
| AddressId   | int     |
| PersonId    | int     |
| City        | varchar |
| State       | varchar |
+-------------+---------+

addressId 是该表的主键列。 该表的每一行都包含一个 ID = PersonId 的人的城市和州的信息。  

编写一个SQL查询来报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为空  null 。

以 任意顺序 返回结果表。

查询结果格式如下所示。

代码语言:javascript
复制
示例 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 的地址信息。
代码语言:javascript
复制
示例 2:

二、解题

1、思路分析

怎么混进来一个SQL题目呢。。。

首先是两个表Person和Address,其中personId是表Person的外关键字。

可以连接两个表来获取一个人的地址信息。

使用outer join关键词。

2、代码实现

代码参考:

代码语言:javascript
复制
select FirstName, LastName, City, State
from Person left join Address
on Person.PersonId = Address.PersonId;

3、时间复杂度

时间复杂度:

空间复杂度:

三、总结

如果没有某个人的地址信息。

使用where子句进行过滤记录会失败。

因为它不会显示姓名信息。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目
    • 1、算法题目
      • 2、题目描述
      • 二、解题
        • 1、思路分析
          • 2、代码实现
            • 3、时间复杂度
            • 三、总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档