我的数据库中有几个表 -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;
您可以在 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
我相信这样的事情会奏效:
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
的链接,以获取更多信息。
如果您使用 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'
* ) 目前尚不清楚,从问题标签来看。