
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
这会返回:
FirstName
和LastName
(来自Persons
表)。City
和State
(来自Address
表,可能返回NULL
值)。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月17日 05时57分51秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
maven project 部署到tomcat时项目部署不上去
2019-03-06
[Unity][EXE]封装打包后怎么Debug错误显示output_log.txt
2019-03-06
使用promise封装wx:requset()
2019-03-06
图文追踪PlusToken资产转移行踪(一): BTC部分有1,203个流入交易所
2019-03-06
stm32h743iit6 cubmex 配置QSPI w25128模式问题
2019-03-06
让nginx支持文件上传的几种模式
2019-03-06
自定义的seekBar(二)
2019-03-06
快上车!Java技术开发大厂直通车马上启动!
2019-03-06
photon磁力下载工具
2019-03-06
LeetCode 637 二叉树的层平均值-简单
2019-03-06
Java虚拟机结构(内存,类加载器,执行引擎)
2019-03-07
制作横版游戏KillBear第9课:暂停层+屏蔽下层监听
2019-03-07
Redis-day2-五种数据结构类型与数据持久化AOF+RDB
2019-03-07
IOS开发Swif笔记13-初始化
2019-03-07
IOS开发Swift笔记16-错误处理
2019-03-07
【电商吧 - 4】电商场景数值计算那些坑
2019-03-07
Java 天气预报WebService
2019-03-07
Spring中bean的加载过程
2019-03-07