union all,解释为联合所有
Union解释为联合
union或者Union all实现把前后两个select集合的数据联合起来,组成一个结果集查询输出。
这就要求联合前后的结果集,需要分别有相同的输出字段的数目,并且对应的字段类型要相同。
SELECT column1, column2 from table1
union (all)
select column1, column2 from table2
以上语句要求量表的column1字段类型相同,column2类型相同。而且每个查询的数目都是一样的。
UNION ALL和UNION的差别就在ALL上面,第一个叫联合所有,说明会显示前后两个查询所有的数据,而UNION没有ALL(所有)这个单词,实现将前后两个查询的数据联合到一起后,去掉重复的数据显示。
比如
SELECT COLUMN1 FROM TABLE1的结果是
1
2
3
SELECT COLUMN1 FROM TABLE2的结果是
1
5
6
分别都是三行,那么UNION ALL的结果就是6行
1
2
3
1
5
6
而UNION会过滤掉上述结果中1的重复一行,结果是
1
2
3
5
6
五行结果
你的需求并不是一般所说的多表查询,一般讲多表查询通常是指多表连接查询,或者是嵌套查询。其实你的需求只要将各个查询结果进行联合就可以了。
select
from
A
where
name
like
'%a%'
union
all
select
from
B
where
name
like
'%a%'
union
all
select
from
C
where
name
like
'%a%'
union
all
select
from
D
where
name
like
'%a%'
如果是想取出江厦呼叫中心的父和所有层的子,那就如下
with t1 as (select from authority_relationship where id='江厦呼叫中心'
union all
select s from authority_relationship s join t1 on slower=t1id
),
t2 as (
select from authority_relationship where id='江厦呼叫中心'
union all
select s from authority_relationship s join t2 on shigher=t2id
)
select from t1
union
select from t2
就是把2个具有相同列及数据类型的 结果 放到一起显示,并且不去重。
select a,b,c from table1
union all
select ca,cb,cc from table2
所以你这个没办法,要不就是二个字段合并到一起
SELECT Ab as b
FROM A
union all
select Ba
from B
SQL UNION *** 作符
UNION *** 作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 注释:默认地,UNION *** 作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
你写的那个是有语病的sql
以上就是关于sql查询语句中的“UNION ALL”是什么意思全部的内容,包括:sql查询语句中的“UNION ALL”是什么意思、SQL Server数据库 多表union的问题、怎样修改多条sql子查询语句用union把结果集连接起来。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)