JOIN和UNION的区别是什么?我能举个例子吗?


当前回答

你可能会看到对两者相同的解释,但这完全令人困惑。

联盟:

加入:

其他回答

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

你可能会看到对两者相同的解释,但这完全令人困惑。

联盟:

加入:

我喜欢把一般的区别想成:

join连接表 UNION (et all)组合查询。

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)