union 和 join 和有啥不一样?

Posted

技术标签:

【中文标题】union 和 join 和有啥不一样?【英文标题】:What is the difference between union and join?union 和 join 和有什么不一样? 【发布时间】:2011-02-20 07:38:04 【问题描述】:

SQL关键字unionjoin有什么区别?

【问题讨论】:

与***.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 语句

加入:

    JOINs 中不需要有第 1 点中提到的规则。 根据使用的JOIN 的类型(外、内、笛卡尔..),查询中提到的所有列都会显示结果 一个SELECT 声明就足够了

希望对你有所帮助..

【讨论】:

以上是关于union 和 join 和有啥不一样?的主要内容,如果未能解决你的问题,请参考以下文章

.* 和有啥不一样?和 .* 正则表达式?

infura 和 geth 和有啥不一样?

nx 和 Lerna 和有啥不一样? (monorepos)

mysql中left join和union有啥区别?

";" 和有啥不一样和 T-SQL 中的“GO”?

agora 和 mux 和有啥不一样?在颤动中流式传输实时视频的最佳方式是啥?