假设有以下两个表
fruit 水果表:
name price
苹果 2
西红柿 3
vegetables 蔬菜表:
name price
白菜 1
西红柿 3
如果想知道水果和蔬菜的价格,union可以这样用
select price from fruit union select price from vegetables
得到的结果是:
price
1
2
3
UNION在进行表连接后会筛选掉重复的记录,所以在表连接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果
UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。
如果上述的例子我们只用UNION ALL的话,则结果会是:
price
2
3
1
3
UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,sql union all的执行效率要比sql union效率要高很多,这是因为,使用sql union需要进行排重,而sql union All 是不需要排重的,这一点非常重要,因为对于一些单纯地使用分表来提高效率的查询,完全可以使用sql union All。