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

您可以在 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 回答
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 回答
0

如果您使用 SQL Server 2008* 并且在所有表上都有聚集索引,则可以执行以下查询:

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'

* ) 目前尚不清楚,从问题标签来看。

于 2012-05-14T19:23:18.797 回答