sql中用union all最多可以合并几个表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中用union all最多可以合并几个表相关的知识,希望对你有一定的参考价值。

各个数据库有什么区别

语法
< query specification > | ( < query expression > )
UNION [ ALL ]
< query specification | ( < query expression > )
[ UNION [ ALL ] < query specification | ( < query expression > )
[ ...n ] ]
这个从帮助上看是没有限制的,,,
不过你关联很多的话,对性能可能会造成影响,这个还是要根据实际情况来看的;
各个基本数据库(sqlserver,mysql,oracle(oracle有时候要用到自带的默认表 dual))好像没什么明显区别吧追问

select 1 as a
union select 1 as a
union select 1 as a
union select 1 as a
union select 1 as a
union select 1 as a
union select 1 as a
union select 1 as a
我问的问题是 允许这个多少条语句合并

追答

没看语法?上面写的[ ...n ] ] ,,,意思就是官方没限制,只要你觉得你性能允许

追问

INSERT INTO mytemp VALUES(1,2),
( 1 , 0 ),
( 2 , 1 ),
( 3 , 2 ),
( 4 , 3 ),
( 5 , 4 ),
....同样这个语句的(6,5)有限制数量吗?
写的[ ...n ] ] ,,,
n的最大值没有说,但是肯定有的

追答

有这样的语法?insert into 表 values(1,2)
insert into 表 values(2,1)如果你用values都是一行一行插入的,,,

INSERT
[ TOP ( expression ) [ PERCENT ] ]
[ INTO]
| rowset_function_limited
[ WITH ( [ ...n ] ) ]


[ ( column_list ) ]
[ ]
VALUES ( DEFAULT | NULL | expression [ ,...n ] )
| derived_table
| execute_statement


| DEFAULT VALUES
你可以看到,他的n是指里面的字段数目是n

追问

我想问 一个语句最多可以用 多少个union.

追答

。。。只能给你说官方写的是n,,,

参考技术A 10个,10个以上会报错 参考技术B 字段数目相同就行,没有限制

如果您要合并的 2 个表中没有重复项,您会使用 UNION 还是 UNION ALL [重复]

【中文标题】如果您要合并的 2 个表中没有重复项,您会使用 UNION 还是 UNION ALL [重复]【英文标题】:If there are no duplicates in 2 tables which you want to combine, would you use UNION or UNION ALL [duplicate] 【发布时间】:2021-11-12 17:41:12 【问题描述】:

由于 UNION ALL 比 UNION 快,你会使用 UNION ALL 来组合 2 个没有任何重复的表吗?为什么/为什么不?

【问题讨论】:

【参考方案1】:

当您想要合并表格时,您应该始终默认为UNION ALLUNION 会产生删除重复项的开销——在几乎每个数据库中,即使没有重复项,您也会得到开销。

您应该只在您特别想产生该开销时使用UNION,因为您确实想删除重复项。

【讨论】:

明白,感谢您的回复。 我会推荐初学者使用UNION,除非他们真正理解架构并且可以确定不会有永远重复。 (而且初学者很难理解这一点。)意外的重复会导致各种细微的错误,尤其是在聚合中 (SUM, COUNT, etc)。

以上是关于sql中用union all最多可以合并几个表的主要内容,如果未能解决你的问题,请参考以下文章

sql 查询结果合并union all用法_数据库技巧

SQL Server UNION ALL 合并连接(连接)太慢

oracle sql union all 合并多列

sql 用union合并合并查询结果

SQL 占位符 和 union all

SQL 占位符 和 union all