2.2外连接(Outer Join)
2.2.1左外连接(Left outer Join)
左外连接:左表有就显示 , 不论右表 。
SQL:
SELECTA.idASAID,A.contentASAContent,B.idASBID,B.contentASBContentFROMALEFTJOINBON(A.id = B.id);
1
2
3
4
5
6
7
8
查询结果:
左连接并不是把B表左连接到A表上,而是把A表作为基准表 。由查询结果可以看出,A、B两表左连接,只要A中有结果 , 无论B表中有无结果,都会被查询出来 。
2.2.2右外连接(Right outer Join)
右外连接:右表有就显示,不论左表 。
SQL:
SELECTA.idASAID,A.contentASAContent,B.idASBID,B.contentASBContentFROMARIGHTJOINBON(A.id = B.id);
1
2
3
4
5
6
7
8
9
查询结果:
右连接和左连接类似,只是把B表(连接的表)作为基准表 。由查询结果可以看出 , 无论A表是否存在其他数据,只要B表数据存在就会被查询出来 。
2.2.3全外连接(Full outer Join)
全外连接:左表/右表,有一个有就显示 。
SQL:
SELECTA.idASAID,A.contentASAContent,B.idASBID,B.contentASBContentFROMAFULLOUTERJOINBON(A.id = B.id);
1
2
3
4
5
6
7
8
9
查询结果:
全外连接查询就字面意思也不难看出是查询出两表(A、B)中的所有记录信息 。
注:MySQL中不支持全外连接(但是可以union来实现,后面会介绍) 。
2.2交叉连接(Cross Join)
SQL:
SELECTA.idASAID,A.contentASAContent,B.idASBID,B.contentASBContentFROMACROSSJOINB;
1
2
3
4
5
6
7
8
9
查询结果:
由结果可以看出,交叉连接是对A、B量表进行笛卡尔积的结果查询出来 。即A的每条记录都有和B中所有记录相对应的信息 。
2.3 SQL Union
SQL Union用于将多个select结果集进行合并 。值得注意的是,UNION 内部的 SELECT 语句必须拥有相同数量的列 。列也必须拥有相似的数据类型 。同时 , 每条 SELECT 语句中的列的顺序必须相同 。
SQL:
SELECT*FROMAUNIONSELECT*fromB;
1
查询结果:
Union是把2个Select结果集进行合并,由查询结果也不难看出,A、B两表的结果数据进行了合并,并且都被查询出来了 。
如果2个Select结果集中存在相同的结果 , 用Union则会把相同的记录进行合并 , 查询结果中仅仅会显示一条 。那么如果想都显示出来,把Union换成Union All 即可 。
Union实现Full outer Join:
1.首先获取A、B表中id的不同组合 。
SQL:
CREATEVIEWvasSELECTA.idfromAUNIONSELECTB.idfromB;
1
视图内存如下:
2.以视图V为基本表,Left Join A、B表即可 。
SQL:
SELECTA.id,A.content,B.id,B.contentFROMvLEFTJOINAON(A.id = v.id)LEFTJOINBON(B.id = v.id);
1
2
3
4
5
6
7
8
9
查询结果如下:
mysql多表查询连接方式满外连接的结果 = 左右表匹配的数据 + 左表没有匹配到的数据 + 右表没有匹配到的数据 。
SQL99是支持满外连接的 。使用FULL JOIN 或 FULL OUTER JOIN来实现 。
需要注意的是 , MySQL不支持FULL JOIN,但是可以用 LEFT JOIN UNION RIGHT join代替 。
mysql中怎么连表查询的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql连接查询语句、mysql中怎么连表查询的信息别忘了在本站进行查找喔 。
推荐阅读
- 大型模拟狮子的游戏,模拟狮子下载
- 关于马桶消毒有什么危害视频的信息
- word怎么把页眉横线去掉,word如何将页眉横线去掉
- 淘宝号开通直播有什么好处,淘宝号开通直播有什么好处嘛
- 完全平方数c语言函数 完全平方数c语言函数怎么表示
- 关于慕课thinkphp视频下载的信息
- 鸿蒙系统怎么设置隐藏应用,鸿蒙系统如何隐藏应用软件
- 火影忍者是如何推广的小说,火影小说怎么写
- 虚拟机怎么看mysql 虚拟机怎么看用户名和密码