Sql JOIN和UNION有什么区别?

Sql JOIN和UNION有什么区别?,sql,database,join,union,Sql,Database,Join,Union,JOIN和UNION有什么区别?我可以举个例子吗?UNION将查询中的行放在后面,而JOIN生成笛卡尔乘积并将其子集-完全不同的操作。联合的一个小例子: 类似的简单联接示例: Union使两个查询看起来像一个查询。联接用于检查单个查询语句中的两个或多个表将两个或多个查询的结果合并到一个结果集中,该结果集中包含属于联合中所有查询的所有行 UNION Example: SELECT 121 AS [Column1], 221 AS [Column2] UNION SELECT 321 AS [Col

JOIN和UNION有什么区别?我可以举个例子吗?

UNION将查询中的行放在后面,而JOIN生成笛卡尔乘积并将其子集-完全不同的操作。联合的一个小例子:

类似的简单联接示例:


Union使两个查询看起来像一个查询。联接用于检查单个查询语句中的两个或多个表

将两个或多个查询的结果合并到一个结果集中,该结果集中包含属于联合中所有查询的所有行

UNION Example: SELECT 121 AS [Column1], 221 AS [Column2] UNION SELECT 321 AS [Column1], 422 AS [Column2] 通过使用,可以基于两个或多个表之间的逻辑关系从这些表中检索数据。联接指示SQL应该如何使用一个表中的数据来选择另一个表中的行

UNION操作不同于使用合并两个表中的列的联接

工会示例:

SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId
输出:

Column1    Column2
-------------------
1          2
3          4
加入示例:

SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId

这将输出条件a.Id=b.AFKId为真的两个表中的所有行。

记住union将合并结果以确定是FEATURE还是bug

select 1 as id, 3 as value
union
select 1 as id, 3 as value
id,值

1,3

id,value,id,value


1,3,1,3它们是完全不同的东西

A允许您在不同的表中关联相似的数据

联合将两个不同查询的结果作为单个记录集返回。

JOIN: 联接用于显示具有相同或相同属性的列 不同表中的不同名称。显示的输出 将分别显示所有列。就是 列将彼此相邻对齐

工会: 并集运算符用于组合来自两个对象的数据 具有相同数据类型的列的表。 执行并集时,两个表中的数据都将被删除 在具有相同数据类型的单个列中收集

例如:

见以下两个表:

Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG
现在,对于执行连接类型,查询如下所示

SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);

articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG
这是一个连接

UNION意味着您必须使用 相同数量和类型的列,并将其添加到 将表/结果集放在一起。看看这个例子:

Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4

SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007

articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4

您可能会看到这两种情况的相同示意图解释,但这些解释完全令人困惑

工会:

加入:


UNION运算符仅用于组合两个或多个SELECT语句

而JOIN用于通过内部、外部、左侧或右侧方法从每个表中选择行

参考和。有更好的例子解释。

1。 SQL JOIN子句用于组合数据库中两个或多个表中的记录。联接是通过使用两个表的公共值来组合两个表中的字段的一种方法

二,。 SQL UNION运算符组合两个或多个SELECT语句的结果。 UNION中的每个SELECT语句必须具有相同的列数。列还必须具有类似的数据类型。此外,每个SELECT语句中的列的顺序必须相同

例如: 表1客户/表2订单

内部联接:

选择ID、名称、金额、日期

来自客户


内部联接顺序


ON CUSTOMERS.ID=ORDERS.CUSTOMER\u ID

工会:

选择ID、名称、金额、日期


来自客户


左连接命令


ON CUSTOMERS.ID=ORDERS.CUSTOMER\u ID

联合

选择ID、名称、金额、日期 
 来自客户


右连接命令



ON CUSTOMERS.ID=ORDERS.CUSTOMER\u ID

联接和联合可用于组合来自一个或多个表的数据。区别在于数据的组合方式

简单地说,联接将数据合并到新列中。如果两个表连接在一起,那么第一个表中的数据将显示在同一行中第二个表列旁边的一组列中


联合将数据合并到新行中。如果两个表“联合”在一起,则第一个表中的数据位于一组行中,第二个表中的数据位于另一组行中。行在相同的结果中。

抽象地说,它们是相似的,因为两个表或结果集正在合并,但UNION实际上是用于将具有相同列数的结果集与具有相似数据类型的列合并。结构相同,只添加了新行


在联接中,可以将表/结果集与任何可能的结构组合,包括没有共享/类似列的笛卡尔联接

联接和联合可用于组合来自一个或多个表的数据。区别在于数据的组合方式

简单地说,联接将数据合并到新列中。如果两个表连接在一起,那么第一个表中的数据将显示在同一行中第二个表列旁边的一组列中

联合将数据合并到新行中。如果两个表“联合”在一起,那么来自第一个表的数据位于一组行中 s、 以及另一组中第二个表中的数据。这些行的结果相同

下面是连接的视觉描述。表A和表B的列合并为一个结果

结果中的每一行都包含表A和表B中的列。当一个表中的列与另一个表中的列匹配时,将创建行。此匹配称为连接条件

这使得连接非常适合查找值并将其包含在结果中。这通常是反规范化反转规范化的结果,涉及到在一个表中使用外键,通过在另一个表中使用主键来查找列值

现在将上述描述与工会的描述进行比较。在联合中,结果中的每一行来自一个表或另一个表。在联合中,不合并列来创建结果,而是合并行

联接和联合都可用于将一个或多个表中的数据合并到单个结果中。他们两个都是用不同的方式进行的。连接用于合并不同表中的列,而联合用于合并行

苏联联盟

UNION将两个或多个查询的结果合并到一个结果集中,该结果集包含属于UNION中所有查询的所有行

UNION Example: SELECT 121 AS [Column1], 221 AS [Column2] UNION SELECT 321 AS [Column1], 422 AS [Column2] Ussing连接

连接时,可以根据两个或多个表之间的逻辑关系从这些表中检索数据

JOIN Example: SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id
联合操作是行的垂直聚合的组合结果,
并集运算是列的水平聚合的结果。

我认为一般的区别是:

联接联接表 UNION et all组合查询。
这是根据ANSI标准,UNION ALL不合并结果参见UNION vs UNION ALL您能告诉我什么是UNION-JOIN以及如何在标准SQL中实现它吗?Maria DB有一个命令联合联接,但其他数据库没有。谢谢。@Alex Martelli的答案非常完美,如果不是太简洁的话,那就是依靠笛卡尔积的概念,我必须要查一下它的意思。这些图片暗示完全的外部连接与联合是一样的,这一回答指出,这些图像混淆了它们是什么,但没有继续解释原因,也没有对原始问题提供任何澄清。每一幅带有图表的图像都完美地解释了情况。没有一个图像可以合并所有图表。这将更加令人困惑。这是一个很棒的视觉示例。我很确定在其他答案之后我理解了,但这完全澄清了问题。对于连接示例,从技术上讲,结果不应该有10列吗?@BharathRam认为连接示例是从表A中选择前两列,从表Bawesome answer中选择四列,这应该是可以接受的,imoJoin可以从一个*或多个表中检索数据。这就引出了一个问题:join是用join来表示的,union是用unexplored combines来表示的。不管怎样,你认为除了其他10年前的高投票率答案之外,还有什么能让这一点变得有用呢?反问的查看文本上方的投票箭头鼠标。任何现代DBS,如,都实现UNION JOIN命令。这是一个命令,但并不为人所知或使用。一定要了解更多关于。 JOIN Example: SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id