2

SQLServer2008で複数のテーブルの行をカウントする必要があります。これを行います。

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

しかし、)の近くで構文が正しくないというエラーが発生します。なんで?

PS。テーブルの実際の数は2を超える場合があります。

4

4 に答える 4

3

これを試して:

派生テーブルに名前を付ける必要があります

select count(*) from 
(select * from tbl1 union all select * from tbl2)a
于 2012-09-06T10:28:40.157 に答える
3

テーブルの列数が異なる場合は、この方法を試してください

 SELECT count(*) 
 FROM (
      SELECT NULL as columnName 
      FROM tbl1 
          UNION ALL
      SELECT NULL 
      FROM tbl2
     ) T
于 2012-09-06T10:29:31.533 に答える
1

私はあなたが条項のSELECT中でエイリアスをとる必要があると思います:FROM

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

*また、両方のテーブルtbl1でが正確に同じ数の列を返すことを確認する必要がありtbl2、それらのタイプが一致している必要があります。

于 2012-09-06T10:29:11.190 に答える
0

カウントする前にユニオンをするのは好きではありません。これにより、SQLオプティマイザーはより多くの作業を行うことを選択できます。

AlexKの(削除された)ソリューションは問題ありません。次のこともできます。

select (select count(*) from tbl1) + (select count(*) from tbl2) as cnt
于 2012-09-06T15:17:47.240 に答える