共同点:
都用于合并两个或多个 SELECT 语句的结果集。
SQL UNION 语法
SELECT column_name(s) FROM table_name1 WHERE column_name=value1 UNION SELECT column_name(s) FROM table_name2 WHERE column_name=value2
SQL UNION ALL语法
SELECT column_name(s) FROM table_name1 WHERE column_name=value1 UNION ALL SELECT column_name(s) FROM table_name2 WHERE column_name=value2
注意点:
- UNION 内部的 SELECT 语句必须拥有相同数量的列
- 列也必须拥有相似的数据类型
- 每条 SELECT 语句中的列的顺序必须相同。
- UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
不同点:
多个结果集合并时,UNION 操作符选取不同的值。我们只会看到不同的资料值 (类似 SELECT DISTINCT),UNION不仅会过滤掉集合之间的重复资料值也会过滤掉自己集合中的重复资料值;UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。
注意点:
- 当没有重复记录的情况或者可以允许记录重复的情况下,尽量用UNION ALL。这样不需要判断、过滤重复记录,查询速度更快。