0

データベースにいくつかのテーブルがあります -Orders -OrderDetials -customers など

各テーブルの行の合計を計算し、テーブル名と各テーブルの行の合計のみを持つ単一の出力に結合する必要があります

アドバイスをくれる人はいますか、私はずっと苦労してきました。

4

4 に答える 4

2

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;
于 2012-05-14T19:44:16.440 に答える
1

私はこのようなものがうまくいくと信じています:

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へのリンクを次に示します。

于 2012-05-14T19:21:05.070 に答える
1

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
于 2012-05-14T19:18:06.880 に答える
0

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.

于 2012-05-14T19:23:18.797 に答える