好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
"内联"和"外联"之间的区别是什么? 关闭 返回上一级  

"内联"和"外联"之间的区别是什么?
+ 查看更多

发布日期:2018-02-23 10:22
分类:SQL
浏览次数:71
顺便问一下,左联,右联和全联用在哪里合适?
 
 
回答:
 
假设你在联合不含重复项的列,这是很一般的情况:
A和B的内联产生A与B相交的结果,即维恩图交集的内部。
A和B的外联产生A与B结合的结果,即维恩图并集的外部
例子
假设你有两个表,每个只有单列,数据如下:
A B
- -
1 3
2 4
3 5
4 6
注意(1,2)是A独有的,(3,4)是共有的,(5,6)是B独有的。
内联
使用下列两个查询之一的内联产生两个表的交集,即它们共有的两行。
select * from a INNER JOIN b on a.a = b.b;
select a.*,b.*  from a,b where a.a = b.b;
a | b
--+--
3 | 3
4 | 4
左外联
左外联会产生A中的所有行,外加上B中的共有行。
select * from a LEFT OUTER JOIN b on a.a = b.b;
select a.*,b.*  from a,b where a.a = b.b(+);
a | b
--+-----
1 | null
2 | null
3 | 3
4 | 4
右外联
右外联会产生B中的所有行,外加上A中的共有行。
select * from a RIGHT OUTER JOIN b on a.a = b.b;
select a.*,b.*  from a,b where a.a(+) = b.b;
a | b
-----+----
3 | 3
4 | 4
null | 5
null | 6
全外联
全外联会产生A和B的并集,即A和B中的所有行。如果A中的某项在B中没有对应的数据,那么B部分是空值,反之亦然。
select * from a FULL OUTER JOIN b on a.a = b.b;
a | b
-----+-----
1 | null
2 | null
3 | 3
4 | 4
null | 6
null | 5
上一篇数据库索引如何工作?
如何在mysql中如何删除表的一列?下一篇
下一篇如何在mysql中如何删除表的一列?

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2017  苏州卡达网络科技有限公司 好问 GOODQ.TOP 备案号:苏ICP备09008221号-5