LeetCode(175)--组合两个表
发布日期:2021-05-10 07:48:29 浏览次数:12 分类:精选文章

本文共 962 字,大约阅读时间需要 3 分钟。

组合两个表

以下是基于已知两表的SQL查询示例:

表信息:

表1:Person

  • 列名:PersonsId(主键)
  • 列名:FirstName(varchar)
  • 列名:LastName(varchar)

表2:Address

  • 列名:AddressId(主键)
  • 列名:PersonsId(外键,连接到Person的PersonsId)
  • 列名:City(varchar)
  • 列名:State(varchar)

问题描述:

编写一个SQL查询,确保无论Persons是否有对应的地址信息,都能基于以下信息查询Persons表中的记录:

  • FirstName
  • LastName
  • City
  • State

优化思路:

为了确保无论Persons是否有地址信息都能获取所需信息,我们需要使用左连接(LEFT JOIN)

左连接会保留所有来自左边表(Persons)的记录,即使右边表(Address)无对应数据。


SQL查询示例:

SELECT  
p PersonsId,
p FirstName,
p LastName,
a.City,
a.State
FROM
Persons p
LEFT JOIN Address a ON p.PersonsId = a.PersonsId

解释:

  • LEFT JOIN:确保Query保留所有左边表(Persons)的记录,即使右边表没有相关数据。
  • ON p.PersonsId = a.PersonsId:基于PersonsId字段进行外键连接。
  • SELECT:选择需要返回的字段,包括PersonsId(主要是为了保留Persons表的所有记录)。

注意事项:

  • 如果需要去掉PersonsId,可以调整如下:
SELECT  
p.FirstName,
p.LastName,
a.City,
a.State
FROM
Persons p
LEFT JOIN Address a ON p.PersonsId = a.PersonsId

这会返回:

  • FirstNameLastName(来自Persons表)。
  • CityState(来自Address表,可能返回NULL值)。
上一篇:LeetCode(595)--大的国家
下一篇:LeetCode(485)--最大连续1的个数

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年04月17日 05时57分51秒