数据库练习——leetcode(175):多表查询
2020-03-24 19:17
369 查看
文章目录
数据库练习——leetcode(175):组合两张表 外连接
一、题目
二、解析
本题主要考察多表连接。
按题意要求,使用outer join时可以保证指定表的每条记录都出现----即使没有匹配, outer join又可以分为left join, right join, full join。
我们想让Address表中即使没有Person,也让Person有Address属性,所以连接后Person表要完整显示出来,address没有的显示为None.
- 那么我们可以用 Person表 left join Address,或者反过来用right join。
select A.FirstName, A.LastName, B.City, B.State from Person A left join Address B on A.PersonId = B.PersonId;
- 大神做法:
select A.FirstName, A.LastName, B.City, B.State from Person A left join (select distinct PersonId, City, State from Address) B on A.PersonId = B.PersonId;
通过先对Address表去除重复的项,减少连接次数,提高效率,降低时间
三、内连接与外连接
- 内连接
inner join
:查询的结果是两个表匹配到的数据 - 右连接
right join
:查询的结果是两个表匹配的数据,右表特有的数据,对于左表中不存在的数据使用null填充 - 左连接
left join
:查询的结果是两个表匹配的数据,左表特有的数据,对于右表中不存在的数据使用null填充
举例:
-- student表 select * from students; -- class表 select * from classes;
- 内连接
select * from students as s inner join classes as c on s.cls_id=c.id;
- 右连接
select * from students as s right join classes as c on c.id=s.cls_id;
- 左连接
select * from students as s left join classes as c on c.id=s.cls_id;
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 数据库练习——leetcode(176):薪资第二的薪水-分页查询limit与对null的处理
- 数据库练习——leetcode(177):第N高的薪水
- 数据库 子查询练习 三个表之间的查询
- 数据库 创建 查询 练习
- 数据库查询练习1
- SQL查询练习一(From LeetCode)
- 数据库组合查询练习1
- 简单线程系列6-练习单线程查询数据库
- 数据库Oracle强化练习之多表查询
- JSP_DAO方式实现数据库查询(MyEclipse10,Tomcat7.0,JDK1.7,)——Java Web练习(四)
- JSP实现数据库(MySQL)查询——Java Web练习(二)
- Access数据库查询练习专用数据库 -手机号码归属地Access数据库_MobileDB(10万条记录)
- 数据库SQL查询练习
- Orcale:子查询、集合运算、随堂练习相关子查询、创建和管理表、其他数据库对象
- MySql数据库基础查询语句练习大全一(练习完,你就完全掌握了基本的数据库查询)
- 数据库学习笔记和小练习(6)sql查询和更新练习
- 数据库查询练习
- mybatis链接数据库mysql8.0根据用户ID查询用户信息练习
- 数据库基础(子查询练习、链接查询(join on 、union)及其练习)
- Access数据库查询练习专用数据库 -手机号码归属地Access数据库_MobileDB(10万条记录)