使用tSQL计算多个表中的行

时间:2012-09-06 10:27:48

标签: sql sql-server sql-server-2008 tsql count

我需要计算SQL Server 2008中多个表中的行。我这样做:

select count(*) from (select * from tbl1 union all select * from tbl2)

但它给我一个错误的语法错误附近)。为什么呢?

PS。表的实际数量可以超过2个。

4 个答案:

答案 0 :(得分:3)

试试这个:

您必须为派生表提供名称

select count(*) from 
(select * from tbl1 union all select * from tbl2)a

答案 1 :(得分:3)

如果你的表中有不同数量的列,请尝试这种方式

 SELECT count(*) 
 FROM (
      SELECT NULL as columnName 
      FROM tbl1 
          UNION ALL
      SELECT NULL 
      FROM tbl2
     ) T

答案 2 :(得分:1)

我认为您必须在SELECT子句中为FROM添加别名:

select count(*) 
from 
(
   select * from tbl1 
   union all 
   select * from tbl2
) AS SUB

您还需要确保*tbl1两个表中的tbl2返回完全相同的列数,并且必须在其类型中进行匹配。

答案 3 :(得分:0)

在做计数之前我不喜欢做联盟。它为SQL优化器提供了选择做更多工作的机会。

AlexK的(已删除)解决方案很好。你也可以这样做:

select (select count(*) from tbl1) + (select count(*) from tbl2) as cnt