带/不带游标的简单Sql过程
请帮助我完成一个简单的过程,比如说在Sql Server上(2005年、2008年,没关系) 我有1000行的table带/不带游标的简单Sql过程,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,请帮助我完成一个简单的过程,比如说在Sql Server上(2005年、2008年,没关系) 我有1000行的tabledbo.[columns],它们都是数据库中某些特定表名的名称 底线是我需要创建一个过程来解析所有1000行表, 对于在dbo.[columns]中找到的每个表名,执行以下操作 select: select count(*), ''''+[column_name]+'''' from dbo.[column_name] 结果应该是这样的: count(*) table_
dbo.[columns],它们都是数据库中某些特定表名的名称
底线是我需要创建一个过程来解析所有1000行表,
对于在dbo.[columns]中找到的每个表名,执行以下操作
select: select count(*), ''''+[column_name]+'''' from dbo.[column_name]
结果应该是这样的:
count(*) table_name:
100 employees
0 ex_employees
25 addresses
10 birthdays
有什么提示吗
提前感谢,,
Bogdan可能不是你在问什么,但应该得到我认为你想要的结果。您可以使用系统视图获取每个表的行数,而无需运行count(*)
*第二个问题应该更精确
将此查询与您的dbo.[columns]
进行内部联接可以仅筛选所需表的结果。使用光标尝试此操作,然后
SELECT COUNT(Column_With_List_Of_Table_Names_Here)
, Column_With_List_Of_Table_Names_Here
FROM YourDatabase.dbo.YourTable
GROUP BY Column_With_List_Of_Table_Names_Here;
SELECT i.rowcnt, o.name FROM sysindexes i
LEFT JOIN sys.objects o ON i.id = o.object_id
WHERE indid <2
ORDER BY name
SELECT SUM (row_count) AS ROWS, o.Name AS TableName
FROM sys.dm_db_partition_stats s
LEFT JOIN sys.objects o ON s.object_id = o.object_id AND (index_id=0 or index_id=1)
GROUP BY o.Name
CREATE TABLE #temp(count_ int,table_name varchar(50))
DECLARE @column_Name VARCHAR(50)
DECLARE @query VARCHAR(500)
DECLARE table_cursor CURSOR FOR
SELECT [column_name] from dbo.[column_name]
OPEN product_cursor
FETCH NEXT FROM product_cursor INTO @column_Name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @query='INSERT INTO #temp SELECT'+ @column_Name+',COUNT(*) FROM'+ @column_Name
EXEC sp_executesql @SQLStatement=@query
/*this will insert the coresponding table name and its row count to #temp*/
END
CLOSE product_cursor
DEALLOCATE product_cursor
select * from #temp