データベースにいくつかのテーブルがあります -Orders -OrderDetials -customers など
各テーブルの行の合計を計算し、テーブル名と各テーブルの行の合計のみを持つ単一の出力に結合する必要があります
アドバイスをくれる人はいますか、私はずっと苦労してきました。
データベースにいくつかのテーブルがあります -Orders -OrderDetials -customers など
各テーブルの行の合計を計算し、テーブル名と各テーブルの行の合計のみを持つ単一の出力に結合する必要があります
アドバイスをくれる人はいますか、私はずっと苦労してきました。
SQL Server の場合、これはどちらよりもはるかに効率的ですCOUNT(*)
。システムのボリュームに応じてより正確になりますが、パフォーマンスが大幅に低下する可能性があります (システムが不安定な場合、カウントはいずれにせよ、すべての組合が情報を収集する時間):
SELECT t.name, SUM(p.rows)
FROM sys.tables AS t
INNER JOIN sys.partitions AS p
ON t.[object_id] = p.[object_id]
GROUP BY t.name
ORDER BY t.name;
私はこのようなものがうまくいくと信じています:
SELECT 'Table 1 Name', count(column_to_sum) from table_1
UNION ALL
SELECT 'Table 2 Name', count(column_to_sum) from table_2
UNION ALL
SELECT 'Table 3 Name', count(column_to_sum) from table_3
UNION ALL
SELECT 'Table 4 Name', count(column_to_sum) from table_4
詳細については、MySQLのコマンドに関するドキュメントUNION
へのリンクを次に示します。
Microsoft SQL Server 2008 では、次のようなことができます。
DECLARE @Tables TABLE
(
TableName VARCHAR(50),
RowCount INT
)
INSERT INTO @Tables
SELECT
'Customers',
COUNT(*) AS RowCount
FROM
Customers
INSERT INTO @Tables
SELECT
'Orders',
COUNT(*) AS RowCount
FROM
Orders
etc...
SELECT
*
FROM
@Tables
If you use SQL Server 2008* and have clustered indexes on all tables, you could perform this query:
select o.name, i.rowcnt
from sys.sysobjects o
join sys.sysindexes i
on i.id = o.id and i.indid = 1 -- only clustered indexes
where o.xtype='U' -- only objects of type 'User Table'
*) Unclear for the moment, judging by the question tags.