每天一道SQL题之day02

每天一道SQL题

每天一道SQL题之day02


1、题目:

表:Person

±------------±--------+
| 列名 | 类型 |
±------------±--------+
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
±------------±--------+
personId 是该表的主键列。
该表包含一些人的 ID 和他们的姓和名的信息。

表:Address

±------------±--------+
| 列名 | 类型 |
±------------±--------+
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
±------------±--------+
addressId 是该表的主键列。
该表的每一行都包含一个 ID = PersonId 的人的城市和州的信息。

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

示例:

Person表:

personIdlastNamefirstName
1wangAllen
2AliceBob

Address表:

addressIdpersonIdcitystate
12New York CityNew York
23CodeCalifornia

输出:

firstNamelastNamecitystate
AllenWangNullNull
BobAliceNew York CityNew York

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

2、题解

select FirstName,LastName,City,State
from Person
left join
Address
on 
Person.PersonId = Address.PersonId

3、解析

由输出可以看到,firstNamelastName 都不为空,而citystate 有为null的。故可以用Person表来连接Address表。
故可以用多表连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值