回答:
SELECT (
SELECT COUNT(*)
FROM tab1
) AS count1,
(
SELECT COUNT(*)
FROM tab2
) AS count2
FROM dual
FROM dual
。
追加情報として、SQL Serverで同じことを行うには、クエリの "FROM dual"部分を削除するだけです。
それがわずかに異なるからといって:
SELECT 'table_1' AS table_name, COUNT(*) FROM table_1
UNION
SELECT 'table_2' AS table_name, COUNT(*) FROM table_2
UNION
SELECT 'table_3' AS table_name, COUNT(*) FROM table_3
それは転置された答えを提供します(1つの列ではなく、テーブルごとに1つの行)。パフォーマンス的には同等だと思います。
その他のわずかに異なる方法:
with t1_count as (select count(*) c1 from t1),
t2_count as (select count(*) c2 from t2)
select c1,
c2
from t1_count,
t2_count
/
select c1,
c2
from (select count(*) c1 from t1) t1_count,
(select count(*) c2 from t2) t2_count
/
ここに私から共有します
オプション1-異なるテーブルの同じドメインから数える
select distinct(select count(*) from domain1.table1) "count1", (select count(*) from domain1.table2) "count2"
from domain1.table1, domain1.table2;
オプション2-同じテーブルの異なるドメインから数える
select distinct(select count(*) from domain1.table1) "count1", (select count(*) from domain2.table1) "count2"
from domain1.table1, domain2.table1;
オプション3-「union all」を使用して同じテーブルの異なるドメインからカウントし、カウントの行を含める
select 'domain 1'"domain", count(*)
from domain1.table1
union all
select 'domain 2', count(*)
from domain2.table1;
SQLを楽しんでください、私はいつもします:)
select (select count(*) from tab1) count_1, (select count(*) from tab2) count_2 from dual;
少し完全にするために、このクエリは、特定の所有者のすべてのテーブルの数を提供するクエリを作成します。
select
DECODE(rownum, 1, '', ' UNION ALL ') ||
'SELECT ''' || table_name || ''' AS TABLE_NAME, COUNT(*) ' ||
' FROM ' || table_name as query_string
from all_tables
where owner = :owner;
出力は次のようなものです
SELECT 'TAB1' AS TABLE_NAME, COUNT(*) FROM TAB1
UNION ALL SELECT 'TAB2' AS TABLE_NAME, COUNT(*) FROM TAB2
UNION ALL SELECT 'TAB3' AS TABLE_NAME, COUNT(*) FROM TAB3
UNION ALL SELECT 'TAB4' AS TABLE_NAME, COUNT(*) FROM TAB4
その後、実行してカウントを取得できます。それは時々持っている便利なスクリプトです。
テーブル(または少なくともキー列)が同じタイプの場合は、最初にユニオンを作成してからカウントします。
select count(*)
from (select tab1key as key from schema.tab1
union all
select tab2key as key from schema.tab2
)
または、あなたの飽食を取り、その周りに別のsum()を置きます。
select sum(amount) from
(
select count(*) amount from schema.tab1 union all select count(*) amount from schema.tab2
)
--============= FIRST WAY (Shows as Multiple Row) ===============
SELECT 'tblProducts' [TableName], COUNT(P.Id) [RowCount] FROM tblProducts P
UNION ALL
SELECT 'tblProductSales' [TableName], COUNT(S.Id) [RowCount] FROM tblProductSales S
--============== SECOND WAY (Shows in a Single Row) =============
SELECT
(SELECT COUNT(Id) FROM tblProducts) AS ProductCount,
(SELECT COUNT(Id) FROM tblProductSales) AS SalesCount
select @count = sum(data) from
(
select count(*) as data from #tempregion
union
select count(*) as data from #tempmetro
union
select count(*) as data from #tempcity
union
select count(*) as data from #tempzips
) a