1. 组合两个表

题目地址


难度:

简单

题目详情:

  1. 1 Person
  2. +------------+-----------+
  3. | 列名 | 类型 |
  4. +----------- +-----------+
  5. | PersonId | int |
  6. | FirstName | varchar |
  7. | LastName | varchar |
  8. +------------+-----------+
  9. PersonId 是上表主键
  10. 表二 Address
  11. +------------+-----------+
  12. | 列名 | 类型 |
  13. +----------- +-----------+
  14. | AddressId | int |
  15. | PersonId | int |
  16. | City | varchar |
  17. | State | varchar |
  18. +------------+-----------+
  19. AddressId 是上表主键

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:

FirstName, LastName, City, State

思路

因为表 Address 中的 PersonId 是表 Person 的外关键字,所以我们可以连接这两个表来获取一个人的地址信息。

考虑到可能不是每个人都有地址信息,我们应该使用 outer join 而不是默认的 inner join

题解

select Person.FirstName as FirstName, Person.LastName as LastName, Address.City as City, Address.State as State from Person left join Address on Person.personId = Address.personId;