在维护使用的多个表的时候遇到了需要跨表统计信息的需求,经查询可以使用union和union all语句实现

union和union all都是组合多个表的内容然后作为一个表输出。

他们的不同点是:

union会去掉重复的行,而union all会全部保留

使用他们时需要注意的是:

所有查询中的列数和列的顺序必须相同(列表内容可以包括:列名、算术表达式、聚合函数等)

数据类型必须兼容(结果集中的相应列必须具有相同数据类型,或者两种数据类型之间存在隐性数据转换,或提供了类型转换)

下面是具体的例子:

现在有两个表TA和TB,每个表都有Name列和Size列,目标是显示每个Name的Size和,语句如下

select name,sum(size) from (select name,size from TA union select name,size from TB) alias group by name;

alias是圆括号中合并(union)的表的别名。


Logo

更多推荐