之间的区别是什么 JOINUNION?我可以有一个例子吗?

有帮助吗?

解决方案

UNION后彼此放线从查询,而JOIN使得笛卡尔乘积和子集它 - 完全不同的操作。 UNION的简单的例子:

mysql> SELECT 23 AS bah
    -> UNION
    -> SELECT 45 AS bah;
+-----+
| bah |
+-----+
|  23 | 
|  45 | 
+-----+
2 rows in set (0.00 sec)

JOIN的与之相似琐碎示例:

mysql> SELECT * FROM 
    -> (SELECT 23 AS bah) AS foo 
    -> JOIN 
    -> (SELECT 45 AS bah) AS bar
    -> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
|  23 |  45 | 
+-----+-----+
1 row in set (0.01 sec)

其他提示

UNION 结合两种结果或多个查询到一个结果集,包括属于在工会所有查询的所有行。

使用加入,则可以检索基于表之间的逻辑关系从两个或更多表中的数据。联接指示SQL应该如何使用数据从一个表中的另一表中选择行。

在UNION操作是从使用JOINS从两个表合并列不同。

UNION示例:

SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]

输出:

Column1    Column2
-------------------
1          2
3          4

JOIN示例:

SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId

此将输出所有从两个表中的行的量,条件a.Id = b.AFKId是真实的。

连接与联合可以用于将数据从一个或多个表结合起来。不同之处在于数据的方式相结合。

在简单来说,<强>加入数据组合成新的列即可。如果两个表连接在一起,然后,从第一表中的数据示出在一组列的旁边的相同行中的第二个表的列中。

<强>联盟结合数据到新的行。如果两个表是“联合在一起”在一起,然后从第一表中的数据是在一组行,以及从所述第二表中的另一组数据。中的行位于相同的结果。

下面是一个连接的视觉描绘。表A和B的列被组合成单个结果。

结果中的每行包含创建从BOTH表A和B的行列时从另一个表匹配列的列。该匹配被称为连接条件。

这使得加入用于查找值,并让他们参与的结果真的很棒。这通常是反规范化(倒车正常化)的结果,并使用在一个表的外键通过在另一使用主键来查找列值涉及。

现在比较与联合的上述描述。在工会的结果中的每一行是从一个表或其他。在一个联盟,列不组合以产生结果,列组合。

这两个连接与联合可以用于将数据从一个或多个表组合成单个结果。他们俩都有关,这是不同的方法。而加入用于从不同的表列组合在一起,结合被用于行结合。

您可以看到两者的相同的示意性说明,但这些是完全混乱。

有关UNION:

“输入图像的描述在这里“

有关JOIN:

“输入图像的描述在这里“

JOIN:

一个连接用于与相同的或显示的列 从不同的表不同的名字。输出显示 将单独显示的所有列。那就是 列将被对准彼此相邻。

UNION:

在UNION集合运算符被用于从两个组合数据 它具有相同的数据类型列的表。 当从两个表进行数据的UNION将 收集在具有相同的数据类型的单个列。

例如:

请参阅如下所示的两个表:

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

现在用于执行JOIN类型查询如下所示。

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

他们是完全不同的东西。

一个加入允许您涉及在不同的表类似的数据。

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

联盟使得两个查询看起来像一个。连接被用于在单个查询语句检查两个或多个表

连接与联合可以用于将数据从一个或多个表结合起来。不同之处在于数据的方式相结合。

在简单来说,加入的数据组合成新的列。如果两个表连接在一起,然后,从第一表中的数据示出在一组列的旁边的相同行中的第二个表的列中。

联盟结合数据到新的行。如果两个表是“联合在一起”在一起,然后从第一表中的数据是在一组行,以及从所述第二表中的另一组的数据。中的行位于相同的结果。

请记住,联盟将合并结果( SQL服务器可以肯定的)(功能或者错误?)

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

ID,值

1,3

select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id

ID,值,ID,值

1,3,1,3

1。 在SQL连接子句用于记录来自两个或多个数据库中的表结合起来。 A JOIN是用于通过使用共同的每个值组合从两个表中的字段的装置。

2。 在SQL UNION运算符将两个或多个SELECT语句的结果。 联盟内的每个SELECT语句必须具有相同的列数。列也必须有类似的数据类型。此外,在各SELECT语句中的列必须按相同的顺序。

例如: 表1客户/表2目

内加入:

选择ID,NAME,金额,日期

FROM客户

INNER JOIN订单

在CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

联合:

选择ID,NAME,金额,日期

FROM客户

LEFT连接顺序

在CUSTOMERS.ID = ORDERS.CUSTOMER_ID

UNION

选择ID,NAME,金额,日期 FROM客户

RIGHT连接顺序

在CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

尤斯UNION

UNION是两个或多个查询的结果组合成一个结果集,包括属于在工会所有查询的所有行。

UNION Example:
SELECT 121 AS [Column1], 221 AS [Column2]
UNION
SELECT 321 AS [Column1], 422 AS [Column2]
Output:

Column1    Column2
-------------------
121          221
321          422

尤斯JOIN的

联接,可以从两个或多个表基于表之间的逻辑关系中检索数据。

JOIN Example:
SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id

在抽象的,它们是相似的,因为两个表或结果集被组合,但UNION是真的结果集与各列具有类似数据类型的列相同数目的完美组合。该结构被添加相同的,只是新行。

在联接,可以结合表/结果集与任何可能的结构,包括一个直角连接在没有共享/类似的列。

欧盟运营商只是为了合并两个或更多的选择的发言。

同时,加入对于选择行从每个表格,无论是由内部、外部、左或右的方法。

请参阅 在这里,在这里, .有一个更好的解释的例子。

联盟操作被组合在垂直的结果行的骨料, UNION操作被组合的结果的水平列的骨料。

我喜欢将一般差异视为:

  • JOINS 连接表
  • UNION(等)组合查询。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top