创建一个包含其他表记录数的表

时间:2015-08-20 23:20:27

标签: sql count

我想创建一个包含2列RECORDS_COUNTTABLE_NAME的表COUNT,它显示5个表的行数:

TABLE1TABLE2,... TABLE5POP-TOTAL

例如:

TABLE-NAME |  COUNT
 ----------------------

TABLE1     |  200 
----------------------
TABLE2     |  100  
----------------------
TABLE3     |  200 
----------------------
TABLE4     |  350 
--------------------- 
TABLE5     |  150  
----------------------
POP-TOTAL      |  1000 

这些数字每天都会改变,我需要快速访问结果,而无需打开5个表格。

1 个答案:

答案 0 :(得分:1)

我已经将下面的旧答案留下了兴趣,但我认为这可以更准确地解决您的问题:

SELECT 
[TableName] = so.name, 
[RowCount] = MAX(si.rows)
into #temp
FROM 
sysobjects so, 
sysindexes si 

WHERE 
so.xtype = 'U' 
AND 
si.id = OBJECT_ID(so.name)
and so.name in ('TABLE1', 'TABLE2', 'TABLE3', 'TABLE4', 'TABLE5') 
GROUP BY 
so.name 

select * 
from #temp
union all
select 'POP-TOTAL', (select SUM([RowCount]) from #temp)

这将在临时表中生成所需的结果。然后总结并显示它们。

旧答案:

如果格式很重要,这可能不适合你,但这里有一个答案: Select COUNT in two table in one query with MYSQL

它可能会让你走上正轨。

select (select count(*) from table1) as t1_amount,
       (select count(*) from table2) as t2_amount,
       (select count(*) from table1) + (select count(*) from table2) as Total

使用这种方法,每个表都有一列,加上一个列。

它不是最有效的,但如果你只是想每天检查,它应该做的工作。

输出:

t1_amount | t2_amount | Total
-----------------------------
1121      | 544       | 1665