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

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

以 任意顺序 返回结果表。

示例 :

复制代码
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 的地址信息。

【思路】

从表的结构可以看出,表1(Person)是人的姓名信息,表2(Address)是人的地址信息。

1)考虑到有的人可能没有地址信息,要是查询结构要查所有人,需要保留表1(Person)里的全部数据,所以用左联结(left join)

2)两个表联结条件:两个表通过personId产生联结。

所以可知查询代码如下

select A.firstName,A.lastName,B.city,B.state from Person as A left join Address as B on A.personId=B.personId;

 

posted @   多测师_树哥  阅读(145)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2021-12-02 进行购物的订单状态【重点】【杭州多测师】【杭州多测师_王sir】
2021-12-02 点击发送验证码和点击图形刷新【杭州多测师】【杭州多测师_王sir】
2021-12-02 什么是测试数据【杭州多测师】【杭州多测师_王sir】
2019-12-02 Python测试基于websocket协议的即时通讯接口【多测师】
点击右上角即可分享
微信分享提示