UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的数据都列出来,无论数据值有无重复。
UNION ALL 的语法如下:
[SQL 语句 1] UNION ALL [SQL 语句 2];
我们用和上一页同样的例子来显示出 UNION ALL 和 UNION 的不同。同样假设我们有以下两个表格,
Store_Information 表格
Store_Name | Sales Txn_Date |
Los Angeles | 1500 05-Jan-1999 |
San Diego | 250 07-Jan-1999 |
Los Angeles | 300 08-Jan-1999 |
Boston | 700 08-Jan-1999 |
Internet Sales 表格
Txn_Date | Sales |
07-Jan-1999 | 250 |
10-Jan-1999 | 535 |
11-Jan-1999 | 329 |
12-Jan-1999 | 750 |
而我们要找出有店面营业额以及网络营业额的日子。要达到这个目的,我们用以下的 SQL 语句:
SELECT Txn_Date FROM Store_Information UNION ALL SELECT Txn_Date FROM Internet_Sales;
结果:
Txn_Date Jan-05-1999 Jan-07-1999 Jan-08-1999 Jan-08-1999 Jan-07-1999 Jan-10-1999 Jan-11-1999 Jan-12-1999
UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,sql union all的执行效率要比sql union效率要高很多,这是因为,使用sql union需要进行排重,而sql union All 是不需要排重的,这一点非常重要,因为对于一些单纯地使用分表来提高效率的查询,完全可以使用sql union All。
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程
上一篇:sql union指令
下一篇:es6教程(3):let和const命令
^