Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
leetcode刷题175组合两个表
前文
本题目为leetcode数据库类型题目,题目序号为175,题目链接https://leetcode-cn.com/problems/combine-two-tables/,主要考察对于数据库的操作。
题目信息
表: 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 。 以 任意顺序 返回结果表。
解题思路
首先根据题目的信息,我们可以确定这个题目主要是想进行两表join操作。先分析一下两个表的关系,表中都有同一个字段PersionId,用来确定两表数据之间的关联。对于同一条数据,会同时有person表的个人信息及address表的地址信息。到这里,我们确定使用join关键字即可。而具体使用哪一种join,需要看额外给出的条件。当地址为空时,保存为null。据此分析,也就是查询persion表的所有内容,因此应该采用person left join address。按照这种方式,也就完成了题目要求的sql语句,得到目标结果。
解题答案
select a.FirstName,a.LastName,b.City,b.State from `Person` a left join `Address` b on a.PersonId = b.PersonId
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。