union 和 join 和有啥不一样?
Posted
技术标签:
【中文标题】union 和 join 和有啥不一样?【英文标题】:What is the difference between union and join?union 和 join 和有什么不一样? 【发布时间】:2011-02-20 07:38:04 【问题描述】:SQL关键字union
和join
有什么区别?
【问题讨论】:
与***.com/questions/905379/…重复 【参考方案1】:UNION
运算符用于组合两个或多个SELECT
语句的结果集。
JOIN
关键字在 SQL 语句中用于根据这些表中某些列之间的关系从两个或多个表中查询数据。
w3schools.com 上关于这两个主题的教程(链接到上面)更详细。
【讨论】:
另外,联合来自称为集合论的数学分支。这是工会的好形象en.wikipedia.org/wiki/File:Venn0111.svg【参考方案2】:将连接视为水平,将联合视为垂直
【讨论】:
你确定这是正确的吗?如此处所述:***.com/a/905383/1170330union
一个接一个地组合结果(水平),而 join
并排(垂直)组合它们。
@user1170330 我的答案与另一个答案相匹配。我认为你的方向混淆了。
UNION 将查询中的行一个接一个地放置,而 JOIN 生成笛卡尔积并将其子集——完全不同的操作。就像@EvgenijReznik 提到的 SO 链接一样。【参考方案3】:
联合是来自多个集合的元素的组合。
Join 是多个集合的叉积的子集
【讨论】:
【参考方案4】:如果需要组合多个查询使用联合运算符,该运算符执行第一个查询和第二个查询,然后将所有结果返回一个数据集see more
select field from t1
union
select field from t2
如果需要创建查询从两个或多个表中选择数据,则使用运算符连接see more
select t1.field, t2.field
from t1.number inner join t2.key on t1.number=t2.key
【讨论】:
【参考方案5】:联合:
-
在
UNION
中,您需要注意SELECT
语句中使用的列长度、数据类型和列数在两个表中应该相同
结果与第一个表列名称一起显示为两个表中的数据的组合,通过消除重复项
要使用UNION
,您至少应该有两个SELECT
语句
加入:
-
在
JOIN
s 中不需要有第 1 点中提到的规则。
根据使用的JOIN
的类型(外、内、笛卡尔..),查询中提到的所有列都会显示结果
一个SELECT
声明就足够了
希望对你有所帮助..
【讨论】:
以上是关于union 和 join 和有啥不一样?的主要内容,如果未能解决你的问题,请参考以下文章