sql查询语句中的“UNION ALL”是什么意思

sql查询语句中的“UNION ALL”是什么意思,第1张

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把结果集连接起来。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9326081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存