Sql 试图统计数据库中每个表上的不同记录
我有一个查询,它提供数据库中每个表中的记录总数:Sql 试图统计数据库中每个表上的不同记录,sql,sql-server,count,distinct,Sql,Sql Server,Count,Distinct,我有一个查询,它提供数据库中每个表中的记录总数: SELECT QUOTENAME('MyDb') + '.' + QUOTENAME(SCHEMA_NAME([sOBJ].schema_id)) + '.' + QUOTENAME([sOBJ].[name]) AS [TableName], SUM([sPTN].[Rows]) AS [RowCount] FROM [MyDB].[sys].[objects] AS [
SELECT QUOTENAME('MyDb') + '.' + QUOTENAME(SCHEMA_NAME([sOBJ].schema_id)) + '.'
+ QUOTENAME([sOBJ].[name]) AS [TableName],
SUM([sPTN].[Rows]) AS [RowCount]
FROM
[MyDB].[sys].[objects] AS [sOBJ]
INNER JOIN
[sys].[partitions] AS [sPTN]
ON [sOBJ].object_id = [sPTN].object_id
WHERE [sOBJ].[type] = 'U'
AND [sOBJ].[is_ms_shipped] = 0x0
AND [index_id] < 2 -- 0:Heap, 1:Clustered
GROUP BY [sOBJ].schema_id,
[sOBJ].[name]
我试图做的是为数据库中的每个表获取不同记录的计数。我尝试过使用While循环和cte,但似乎无法正确使用。也不确定这是否是正确的方法
提前感谢。每个表的所有列都不同吗?如果每个表中都有PK,那么每一行都是不同的,我认为这不是一件容易做到的事情,您需要知道决定每个表中差异的列名。您需要索引统计或表统计,但我没有看到直接查询这些数据的方法。唯一可靠的方法是直接选择distinct*来计算行数,这非常糟糕。谢谢你们的回答,这也是我的想法,但我不确定我是否正确。