计算数据库表的总数并组合来自不同表的结果

时间:2012-05-14 19:15:49

标签: mysql sql sql-server-2008

我的数据库中有几个表 -命令 -OrderDetials -顾客 等

我需要计算每个表的行总数并将其组合在一个输出中 只有每个表的表名和行总数

有没有人可以帮我提一些建议,我一直在苦苦挣扎。

4 个答案:

答案 0 :(得分:2)

对于SQL Server,这将比<{1}}更高效 FAR - 虽然根据系统上的音量更准确 - 但可能会非常高效(并且如果系统是易变的,那么当所有工会收集他们的信息时,计数就不准确了):

COUNT(*)

答案 1 :(得分: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

答案 2 :(得分: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

这里有docs on the UNION command in MySQL的链接以获取更多信息。

答案 3 :(得分: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'

* )目前不清楚,从问号标签判断。