Answers:
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-JOIN
,如何在标准SQL中完成它吗?Maria DB有一个命令union join
,而其他数据库则没有。谢谢。
联接和联合可用于合并一个或多个表中的数据。区别在于数据的组合方式。
简单来说,联接将数据合并到新列中。如果将两个表连接在一起,则来自第一张表的数据将显示在同一列中的第二列的同一列中。
联合将数据合并到新行中。 如果将两个表“联合”在一起,则来自第一个表的数据位于一组行中,而来自第二个表的数据位于另一组行中。这些行的结果相同。
这是联接的视觉描述。表A和B的列合并为一个结果。
结果中的每一行都包含表A和表B中的列。当一个表中的列与另一表中的列匹配时,将创建行。此匹配称为联接条件。
这使联接确实非常适合查找值并将其包含在结果中。这通常是归一化(反向归一化)的结果,并且涉及在一个表中使用外键通过在另一个表中使用主键来查找列值。
现在将上述描述与工会的描述进行比较。在并集中,结果中的每一行都来自一个表或另一个表。在联合中,不合并列以创建结果,不合并行。
联接和联合都可用于将一个或多个表中的数据合并为单个结果。他们俩都去这是不同的方式。联接用于组合来自不同表的列,而联合则用于组合行。
UNION将两个或多个查询的结果合并到一个结果集中,该结果集包含属于联合中所有查询的所有行。
通过使用JOIN,您可以基于表之间的逻辑关系从两个或多个表中检索数据。连接指示SQL应该如何使用一个表中的数据选择另一表中的行。
UNION操作不同于使用合并两个表中的列的JOIN。
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
为真的两个表中输出所有行。
联接用于显示来自不同表的具有相同或不同名称的列。显示的输出将单独显示所有列。也就是说,这些列将彼此对齐。
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 Server)(功能或错误?)
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 Joins子句用于合并数据库中两个或多个表的记录。JOIN是一种通过使用每个表的公用值来组合两个表中的字段的方法。
2. SQL UNION运算符组合两个或多个SELECT语句的结果。UNION中的每个SELECT语句必须具有相同的列数。这些列还必须具有相似的数据类型。另外,每个SELECT语句中的列必须具有相同的顺序。
例如:表1客户/表2订单
内部联接:
选择ID,NAME,AMOUNT和DATE
来自客户
内联订单
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
联盟:
选择ID,NAME,AMOUNT和DATE
来自客户
左加入订单
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
联盟
选择客户的ID,名称,金额和日期
正确加入订单
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;