表1: Person
+-------------+---------+ | 列名 | 类型 | +-------------+---------+ | PersonId | int | | FirstName | varchar | | LastName | varchar | +-------------+---------+
PersonId 是上表主键
表2: Address
+-------------+---------+ | 列名 | 类型 | +-------------+---------+ | AddressId | int | | PersonId | int | | City | varchar | | State | varchar | +-------------+---------+
AddressId 是上表主键
编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:
FirstName, LastName, City, State
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combine-two-tables
解题思路:将两个表组合成为一个表,需要找到两个表之间的关系。观察两个表可以看出来,PersonId这一字段两个表都有出现,且是Person表的主键,可以推测出PersonId这个字段是Address表的外键,通过这两个字段之间的关系可以将两个表组合起来。要求中还提到,无论person是否有地址信息,都需要提供两个表的person信息。所以这是一个Person表左连接Address的情况。
SQL语句:
select FirstName,LastName,City,State from Person left join Address on Person.PersonId=Address.PersonId