union all 和 union

本文探讨了在SQL查询中,当结果集允许重复时,如何通过使用UNIONALL而非UNION来提高查询效率。UNION会去除重复并进行排序,消耗更多资源,而UNIONALL则不进行去重,适合不需要消除重复结果的场景。举例说明了如何合并两个表并计算特定条件下某字段的总和,以此展示UNIONALL的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、结果集允许重复的话,尽量用 union all 代替 union

【union】不管检索结果有没有重复,都会尝试进行合并,然后在输出最终结果前进行排序、过滤操作,增加大量的 CPU 运算,加大资源消耗及延迟。
【union all】不去重,效率高于 union。当然,union all 的前提条件是两个结果集没有重复数据。或者如果结果集允许重复的话,尽量使用 union all 代替 union 。

二、合并(union all) 两个表并计算表中某个字段的总和

假如表中数据如上表格,查询 a=‘01’ 时 b,c 两个字段的总和,sql语句如下:

select a,sum(b),sum(c) from (
select a,b,c from t1 where a='01'
union all 
select a,b,c from t2 where a='01'
) d
group by a;

result

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JFS_Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值