我需要计算SQL Server 2008中多个表中的行。我这样做:
select count(*) from (select * from tbl1 union all select * from tbl2)
但它给我一个错误的语法错误附近)。为什么呢?
PS。表的实际数量可以超过2个。
答案 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