博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
左连接,右连接,内连接
阅读量:6263 次
发布时间:2019-06-22

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

很不错的文章:

http://igoder.iteye.com/blog/1278710

------------------------------------------------------

小小的连接查询,其实里面有很多学问,今天我就来简单剖析一下。

左连接,右连接,内连接的本质:将两个表的数据依据一定条件横向连接起来。
给出建表语句:
--------------------------------------------------
create table test1(
       id int,             
       name varchar(10)
)
create table test2(
       id int,             
       name varchar(10)
)
INSERT INTO `test1` VALUES (1,'2');
INSERT INTO `test1` VALUES (1,'2');
INSERT INTO `test1` VALUES (2,'1');
INSERT INTO `test1` VALUES (2,'2');
INSERT INTO `test1` VALUES (3,'1');
INSERT INTO `test2` VALUES (1,'2');
INSERT INTO `test2` VALUES (2,'1');
INSERT INTO `test2` VALUES (2,'2');
--------------------------------------------------
左连接sql:select * from  test1 a left join test2 b on a.id=b.id
如下为左连接示例图:
 
1,理解左连接查询方式(以两表id相等作为on的条件):
先将左表数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。
举例:select * from  test1 a left join test2 b on a.id=b.id   
说明:先将左表数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。
在本例中,我画了6根线,每条线都表示了一条查询结果记录。
当ID为1时:左表有2条ID为1的记录,右表有1条。先查左表的第一条,然后再查询右表中所有ID与左表第一条记录的ID相等(即ID为1)的记录,因右表只有1条记录的ID为1,因此得出查询结果的第一条记录:1,2,1,1。
第二条记录查询方式也同上。
当ID为2时:左右表各有2条ID为2的记录。也是同上,当查左表第一条ID为2的记录时,因右表中有2条ID为2的记录,因此查询结果会有两条,即左表的1条记录会和右表的2条记录一一配对。
第二条记录查询方式也同上。
对于id为3的记录,因右表没有ID为3的记录,因此右边显示为null。
--------------------------------------------------
2,理解了左连接之后,右连接也就不难了。
右连接语句:select * from  test1 a right join test2 b on a.id=b.id 
右连接查询结果:
 
--------------------------------------------------
3,而内连接,则是把ID只存在于某一个表中的记录给过滤了。
以下3条sql语句等价:
select * from  test1 a  join test2 b on a.id=b.id 
select * from  test1 a inner join test2 b on a.id=b.id 
select * from  test1 a , test2 b where a.id=b.id 
内连接查询结果:

转载于:https://www.cnblogs.com/sql88/p/3977007.html

你可能感兴趣的文章
java中的import和package机制
查看>>
统计、案例-深入理解Oracle索引(10):索引列字符类型统计信息的32位限制-by小雨...
查看>>
ubuntu常用命令精选
查看>>
UML类图
查看>>
企业上市上市央企大面积亏损折射出啥弊端?
查看>>
DXP_protel2004_原理图设计基础_集成运放原理图设计学习
查看>>
powershell--uninstall webapplication
查看>>
ubuntu配置vsftpd记录
查看>>
日期控件Android 自定义日历控件
查看>>
Java多线程编程:变量共享分析(Thread)
查看>>
word如何自动生成目录
查看>>
疯狂暑期学习计划~~~
查看>>
Mysql查询大表出现的一个错误
查看>>
Scala 中的foreach和map方法比较
查看>>
使用OWIN作为WebAPI的宿主
查看>>
阿里巴巴、腾讯、百度的面试问题笔知识汇总(两)
查看>>
如果他们在未来的几年内技术水平没有突破性的提升,或者缺乏一点灵性和品味,那么可能在未来很长一段时间内,他们都会保持这个薪资水平(转)...
查看>>
修改setup.py的源
查看>>
SQL Server 常用高级语法笔记
查看>>
IOS开发之SVN的使用
查看>>