sql 的并集UNION和内联结INNER JOIN 有啥区别?感觉结果是一样的。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 的并集UNION和内联结INNER JOIN 有啥区别?感觉结果是一样的。相关的知识,希望对你有一定的参考价值。

我好像理解了内联结,但是并集UNLON有把我绕晕了。所以想知道他们有什么区别?(内联结、左右外联结、全联结,刚刚好像理解了) 但是突然又跑出个 (并集,交集,差集,不知道他们有什么区别?)就想感觉内联结和并集的结果是一样的。 求高手随便指点指点,我很快就会明白的。QQQ

union与inner join不存在区别的,主要体现如下:
1)union:是无条件合并两个结果集的,前提是列的数据类型相兼容,体现在行数增加了;
2)inner join:是需要给出关联字段条件且相等才连接两个结果集,体现在列数增加了。
参考技术A join是针对列,union是针对行。

还有的区别就是inner join需要关联条件,也就是表和表之间需要有联系
union则不需要,可以之间把两个表select 的结果进行连接
参考技术B SQL的并集UNION只能查询两表字段类型(同为int 或者 字符串)相同时才能使用
如 Select id,name,age from tableA
Select id,name,age from tableB 可以并集得到两表查询的结果集
而INNER JOIN 是内连接,需要两表存在关联关系,并且查询出来的结果是两表所有字段的结果集,UNION不需要关联关系 只要查询的字段对应类型一致即可
参考技术C 当然不一样了 其中主要区别在于
UNION 多条查询结果合并一起 而且查询的结果字段还必须相同 尤其是一个查询语句无法满足查询结果的情况
INNER JOIN 是联合多表 可同时查询多个表字段 和多个表条件
简单举个例子
假如表 TABLE 有字段 ID NAME
UNION 可以的查询
SELECT * FROM TABLE WHERE ID = 2
UNION
SELECT * FROM TABLE WHERE ID <>2 AND NAME = 'A'
合并这样的查询
参考技术D 区别大了,join是列的联接,union是行的联接。追问

如果他们联结的对象是主键和外键
JOIN是列的联结。大概的意思是将外键按照主键相加,会把子表里面的其他字段也给带过去。结果会包含除了主键和外键以外的其他的所有字段。
UNION是行的联结,结果是不包含其他的字段。只有该字段的记录。是把两个字段的记录相加成一个字段。
是不是大概这个意思啊。。。

追答

join基本正确。union你理解错了吧,举个例子,where age = 20结果有2条,where age = 30有3条,那么union起来共5条。union通常针对同样表(很多时候就只有一个表)结构的多次select,如果字段不一样就没法union了。

本回答被提问者采纳

以上是关于sql 的并集UNION和内联结INNER JOIN 有啥区别?感觉结果是一样的。的主要内容,如果未能解决你的问题,请参考以下文章

R语言union函数计算数据对象(vectorlistdataframe)的并集:union函数计算两个vector向量dataframe列表list的并集

T-Sql之集合

sql 优化union union allor使用

Zend 2中两个表的并集

SqlSever基础 union 联合查询,厉害的并集 重复项只显示一个 两个查询结果并在一起后排序

sql server 交集,差集的用法 (集合运算)