SQL中为何使用UNION合并行?为何不直接修改表添加行?
为什么SQL里用UNION合并行,而非直接修改表?
临时合并需求,不触碰原始数据
很多时候我们只是需要一次性获取多个数据集的合并结果,完全没必要改动原表。比如要汇总两个分公司的销售数据,用UNION能直接拿到合并后的统计结果;要是用INSERT把一个分公司的数据插到另一个表,会永久修改原表结构,后续单独查某分公司数据反而要额外加筛选条件,还可能误操作污染原始数据。另外,很多用户只有查询权限,根本没资格修改表。处理只读/不可修改的数据源
有些数据存在不同表、甚至不同数据库里,而且是只读状态——比如系统自动生成的日志表、第三方同步过来的静态业务数据。你根本没法用ALTER或UPDATE去修改这些表,只能靠UNION来组合查询结果。拆分存储的数据集,按需合并
不少场景下,为了查询性能会把同结构的数据拆分存储,比如按年份分的orders_2023和orders_2024表。平时分开存能让单年份查询更快,偶尔需要查两年的总订单时,用UNION直接组合即可,没必要把数据合并成一个大表——合并后不仅会增加存储压力,单年份查询的性能也会下降。避免数据冗余与不一致
要是把两个表的数据合并到一起,会造成数据冗余,后续原表更新时,合并后的表也要同步维护,很容易出现数据不一致的问题。用UNION的话,每次查询都是实时拉取原表的最新数据,完全没这个顾虑。
举个实际例子,查询两年的订单数据:
SELECT order_id, customer_id, order_date FROM orders_2023 UNION SELECT order_id, customer_id, order_date FROM orders_2024;
这个语句直接返回合并结果,对原表毫无影响。如果换成INSERT操作,不仅会永久改变原表,后续的查询和维护成本都会上升。
内容的提问来源于stack exchange,提问作者Juggle
相关产品推荐
相关产品推荐

