Leetcode175 组合两个表

本文介绍了一个数据库问题,如何使用左连接在Person表和Address表间查找信息,包括示例和SQL代码,以及内连接、左连接、右连接和全连接的不同用途。
摘要由CSDN通过智能技术生成

一、问题描述

表: Person

列名类型
PersonIdint
FirstNamevarchar
LastNamevarchar

personId 是该表的主键(具有唯一值的列)。
该表包含一些人的 ID 和他们的姓和名的信息。

表: Address

列名类型
AddressIdint
PersonIdint
Cityvarchar
Statevarchar

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

编写解决方案,报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为 null 。

任意顺序返回结果表。

结果格式如下所示。

二、示例及约束

示例 1:
输入:
Person表:

personIdlastNamefirstName
1WangAllen
2AliceBob

Address表:

addressIdpersonIdcitystate
12New York CityNew York
23LeetcodeCalifornia

输出:

firstNamelastNamecitystate
AllenWangNullNull
BobAliceNew York CityNew York

解释:
地址表中没有 personId = 1 的地址,所以它们的城市和州返回 null。
addressId = 1 包含了 personId = 2 的地址信息。

三、代码

方法一:左连接

# Write your MySQL query statement below
select 
FirstName,
LastName,
City,
State
from Person
left join Address
on Person.personId = Address.personId

四、总结

1、总结:

①A inner join B:取交集

②A left join B:取A全部,B没有对应的值,则为null

③A right join B:取B全部,A没有对应的值,则为null

④A full outer join B:取并集,彼此没有对应的值为null

上述4种的对应条件,在on后填写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值