我需要在 SQL Server 2008 中计算多个表中的行数。我这样做:
select count(*) from (select * from tbl1 union all select * from tbl2)
但它给了我一个错误的语法错误靠近)。为什么?
PS。实际表数可以多于 2 个。
我需要在 SQL Server 2008 中计算多个表中的行数。我这样做:
select count(*) from (select * from tbl1 union all select * from tbl2)
但它给了我一个错误的语法错误靠近)。为什么?
PS。实际表数可以多于 2 个。
如果您的表中有不同数量的列,请尝试这种方式
SELECT count(*)
FROM (
SELECT NULL as columnName
FROM tbl1
UNION ALL
SELECT NULL
FROM tbl2
) T
尝试这个:
您必须为派生表命名
select count(*) from
(select * from tbl1 union all select * from tbl2)a
我认为您必须SELECT
在FROM
子句中为 the 别名:
select count(*)
from
(
select * from tbl1
union all
select * from tbl2
) AS SUB
您还需要确保*
在两个表中tbl1
返回tbl2
完全相同的列数,并且它们的类型必须匹配。
我不喜欢在计数之前先做工会。它为 SQL 优化器提供了选择做更多工作的机会。
AlexK 的(已删除)解决方案很好。你也可以这样做:
select (select count(*) from tbl1) + (select count(*) from tbl2) as cnt