一、区别
-
去重功能
UNION
会去除结果集中的重复行。UNION ALL
不会去除重复行,它只是简单地将多个结果集合并在一起。
-
性能
UNION ALL
通常比UNION
性能更好,因为UNION
需要进行去重操作,这会增加额外的计算开销。
二、具体例子
假设有两个表table1
和table2
,它们的结构相同,都有id
和name
字段。
1、使用UNION
:
SELECT id, name FROM table1
UNION
SELECT id, name FROM table2;
如果table1
中有数据 (1, 'Alice') 和 (2, 'Bob'),table2
中有数据 (2, 'Bob') 和 (3, 'Charlie'),那么使用UNION
的结果将是 (1, 'Alice')、(2, 'Bob') 和 (3, 'Charlie'),去除了重复的 (2, 'Bob')。
2、使用UNION ALL
:
SELECT id, name FROM table1
UNION ALL
SELECT id, name FROM table2;
使用UNION ALL
的结果将是 (1, 'Alice')、(2, 'Bob')、(2, 'Bob') 和 (3, 'Charlie'),没有去除重复行。