Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Leetcode】175. 组合两个表

【Leetcode】175. 组合两个表

作者头像
Leetcode名企之路
发布于 2018-11-29 10:16:19
发布于 2018-11-29 10:16:19
1.2K00
代码可运行
举报
文章被收录于专栏:Leetcode名企之路Leetcode名企之路
运行总次数:0
代码可运行
题目

表1: Person

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+-------------+---------+
| 列名         | 类型     |
+-------------+---------+
| PersonId    | int     |
| FirstName   | varchar |
| LastName    | varchar |
+-------------+---------+

PersonId 是上表主键

表2: Address

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+-------------+---------+
| 列名         | 类型    |
+-------------+---------+
| AddressId   | int     |
| PersonId    | int     |
| City        | varchar |
| State       | varchar |
+-------------+---------+
AddressId 是上表主键

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FirstName, LastName, City, State

题解

由于FirstName, LastName, City, State 来自两个不同的 table, 所以要用join。由于要求必须显示人名,即使没有地址相关信息,说明要用LEFT JOIN。左连接即是将左边表中的数据全部查找出来。数据库会以左边为基础,与右边表做笛卡尔乘积。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select FirstName, LastName, City, State
from Person left join Address on Person.PersonId=Address.PersonId

LEFT JOIN或LEFT OUTER JOIN 左连接

左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

RIGHT JOIN 或 RIGHT OUTER JOIN 右链接

右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

FULL JOIN 或 FULL OUTER JOIN 全联接

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Leetcode名企之路 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
leetcode 新题型----SQL,shell,system design
leetcode 主要是一个针对北美的coder人群找工作的代码练习网站,我在2015年初次接触这个网站的时候,总共只有200多道题目,是一个类似acm 的a题网站。这些年变化越来越大,主要是因为找工作当然是多样化的考核过程,leetcode 也逐渐与时俱进,推出了下面几个类别的练习,今天我们随便挑几个练习一下:
流川疯
2019/01/18
1.3K0
☆打卡算法☆LeetCode 175. 组合两个表 算法解析
“编写一个SQL查询来报告包中每个人的信息,如果id不在表中,则报告显示为空,返回结果表。”
恬静的小魔龙
2022/08/07
3230
☆打卡算法☆LeetCode 175. 组合两个表 算法解析
leet-code两表求合查询
编写一个SQL查询来报告Person表中每个人的姓、名、城市和州。如果personId的地址不在Address表中,则报告为空null 。以 任意顺序 返回结果表。
兔云小新LM
2022/11/21
5550
组合两个表(C++)
编写一个SQL查询来报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为空 null 。
GeekLiHua
2025/01/21
1420
LeetCode-175. 组合两个表
编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:
悠扬前奏
2019/05/28
4500
【leetcode两题选手】MySQL类题目(一)
编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:
看、未来
2020/08/25
4220
【leetcode两题选手】MySQL类题目(一)
LeetCode数据库篇|175组合两个表
大家好,从今天起我们将对Leetcode中数据库相关题目进行讲解,如果对SQL相关操作还不是很了解的读者可以点击万字Mysql学习笔记复习。
刘早起
2020/05/12
5620
SQL 左外连接,右外连接,全连接,内连接
联接条件可在   FROM   或   WHERE   子句中指定,建议在   FROM   子句中指定联接条件。WHERE   和   HAVING   子句也可以包含搜索条件,以进一步筛选联接条件所选的行。    联接可分为以下几类:      内联接(典型的联接运算,使用像   =   或   <>   之类的比较运算符)。包括相等联接和自然联接。      内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索   students   和   courses   表中学生标识号相同的所有行。    外联接。外联接可以是左向外联接、右向外联接或完整外部联接。      在   FROM   子句中指定外联接时,可以由下列几组关键字中的一组指定:    LEFT   JOIN   或   LEFT   OUTER   JOIN。      左向外联接的结果集包括   LEFT   OUTER   子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。    RIGHT   JOIN   或   RIGHT   OUTER   JOIN。      右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。    FULL   JOIN   或   FULL   OUTER   JOIN。      完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。    交叉联接。      交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。    例如,下面的内联接检索与某个出版商居住在相同州和城市的作者:      USE   pubs      SELECT   a.au_fname,   a.au_lname,   p.pub_name      FROM   authors   AS   a   INNER   JOIN   publishers   AS   p            ON   a.city   =   p.city            AND   a.state   =   p.state      ORDER   BY   a.au_lname   ASC,   a.au_fname   ASC    FROM   子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。      例子:      a表     id   name     b表     id   job   parent_id                  1   张3                   1     23     1                  2   李四                 2     34     2                  3   王武                 3     34     4      a.id同parent_id   存在关系      内连接      select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id      结果是        1   张3                   1     23     1      2   李四                2     34     2      左连接      select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id      结果是        1   张3                   1     23     1      2   李四                 2     34     2      3   王武                 null      右连接      select   a.*,b.*   from   a   right   join   b  
leehao
2025/02/10
3760
LeetCode 数据库 175. 组合两个表
原题链接 # Write your MySQL query statement below /* Write your T-SQL query statement below */ select Fi
glm233
2021/03/27
6810
MySQL 多表查询、连接查询(内连接、外连接)
查询的结果是一个二维表,它是students表和classes表的“乘积”,即students表的每一行与classes表的每一行都两两拼在一起返回
Michael阿明
2020/07/13
4.1K0
MySQL 多表查询、连接查询(内连接、外连接)
SQL各种联接的说明
/* create table table1(id int,name varchar(10)) create table table2(id int,score int) create table table3(id int,score int)
jack.yang
2025/04/05
1400
在 Swift 中使用 SQL 组合人员和地址数据
在本篇文章中,我们将讨论如何结合两个表——Person 和 Address,以便生成包含每个人的姓名和地址信息的结果表。如果某人的地址信息不存在,则对应的城市和州返回为 null。我们将用 Swift 和 SQLite 数据库实现这一功能,并详细分析其逻辑。
Swift社区
2025/01/27
1610
在 Swift 中使用 SQL 组合人员和地址数据
sql优化:组合两个表
第一:主要是显示person表里面的数据的话,如果是(left join)左连接就把person放在左边,如果是(right join)右连接,就把person放在右边。 第二:因为表 Address 中的 personId 是表 person 的外键,所以我们可以连接这两个表来获取一个人的地址信息。 那问题来了,什么是外键呢? 某一个表的主键是另一张表的某个普通的字段。那就叫外键.双方类型必须一致哦.
贵哥的编程之路
2021/09/08
1K0
【每日SQL打卡】​​​​​​​​​​​DAY 2 丨组合两个表【难度简单】
编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:
不吃西红柿
2022/07/29
3240
「SQL面试题库」 No_4 组合两个表
「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。
不吃西红柿
2023/04/21
3570
深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
转载自 http://www.jb51.net/article/39432.htm
allsmallpig
2021/02/25
6K0
LeetCode-SQL(一)
表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 这一题,比较简单用left join就可以了。
_一级菜鸟
2019/12/20
4780
连接查询和子查询哪个效率高
通过子查询不难看出,可以根据employee_id查到department_id,然后根据deparment_id查到location_id然后查city字段就行了
全栈程序员站长
2022/09/03
5K0
连接查询和子查询哪个效率高
Leetcode-sql-one
本文中主要是介绍LeetCode中关于SQL的练习题,从易到难,循序渐进。文中会介绍题目和尽可能多的解答方案
皮大大
2021/03/01
4430
Leetcode-sql-one
7天快速掌握MySQL-DAY5
首先公布一下DAY4的作业答案。 项目五: --创建表 create table person ( personid int not null primary key, firstname varchar(20) not null, lastname varchar(20) not null ); --插入数据 insert into person values (101, 'ming', 'Yao'); insert into person values (102, 'lei', 'Wu'); inser
披头
2019/12/26
3230
相关推荐
leetcode 新题型----SQL,shell,system design
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验