编写一个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;
本文介绍了一个SQL查询案例,目的是从Person表中获取每个人的姓、名、所在城市和州,并且即使某些记录在Address表中缺失也能正确显示为null。示例展示了如何使用左连接(left join)确保所有人的信息都被包含在结果集中。
&spm=1001.2101.3001.5002&articleId=127245424&d=1&t=3&u=c414b5efacab45f58e5081962ff0e48e)
863

被折叠的 条评论
为什么被折叠?



