在TSQL多个表中的行数(Count rows in more than one table wit

2019-09-22 04:51发布

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

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

但它给我的语法不正确的错误附近)。 为什么?

PS。 表的实际数量可以是2个以上。

Answer 1:

如果你对你的表列数不同的尝试这种方式

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


Answer 2:

尝试这个:

你必须提供一个名称派生表

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


Answer 3:

我认为你必须别名SELECTFROM子句:

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

您还需要确保*两个表中tbl1tbl2返回完全相同的列数,他们必须在他们的类型相匹配。



Answer 4:

我不喜欢做的计数之前做工会。 它给人的SQL优化器的opportunithy选择做更多的工作。

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

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


文章来源: Count rows in more than one table with tSQL