Sql server 使用SQL server的表名及其行数
为了得到下表结果,我使用了以下查询Sql server 使用SQL server的表名及其行数,sql-server,Sql Server,为了得到下表结果,我使用了以下查询 select DISTINCT DO.Name as TableName, '' as 'TotalRecords', RDM.DataObjectId as Id, COALESCE(DO.GroupId, 0) as GroupId, dog.Name as GroupName from [User] as U inner join UserGroupMap UGM on UGM.UserI
select DISTINCT
DO.Name as TableName,
'' as 'TotalRecords',
RDM.DataObjectId as Id,
COALESCE(DO.GroupId, 0) as GroupId,
dog.Name as GroupName
from
[User] as U
inner join
UserGroupMap UGM on UGM.UserId = U.Id
inner join
UserGroupRole UGR on UGR.UserGroupId = UGM.UserGroupId
inner join
RoleDoMap RDM on RDM.RoleId = UGR.RoleId
and RDM.Id in (select RoleDOMapId
from RoleDOPermission DP)
inner join
Client C on C.Id = RDM.ClientId
inner join
[EDGE].[DataObject] DO on DO.Id = RDM.DataObjectId
left join
[EDGE].DataObjectGroup dog on dog.Id = DO.GroupId
where
UGM.UserId = '46'
and C.SchemaName = 'EDGE'
我需要得到每个表的总行数。我无法从上面的查询中获取计数
欢迎提出任何建议
感谢和问候使用
分组方式
SELECT *, COUNT(1) OVER ()
FROM ...
select DISTINCT DO.Name as TableName, COUNT(DO.Name) as 'TotalRecords',RDM.DataObjectId as Id,COALESCE(DO.GroupId, 0) as GroupId,dog.Name as GroupName
from [User] as U
inner join UserGroupMap UGM on UGM.UserId = U.Id
inner join UserGroupRole UGR on UGR.UserGroupId = UGM.UserGroupId
inner join RoleDoMap RDM on RDM.RoleId = UGR.RoleId
inner join RoleDOPermission dp on dp.RoleDOMapId = RDM.Id
inner join Client C on C.Id = RDM.ClientId
inner join [EDGE].[DataObject] DO on DO.Id = RDM.DataObjectId
LEFT JOIN [EDGE].DataObjectGroup dog on dog.Id = DO.GroupId
group by DO.Name,RDM.DataObjectId,DO.GroupId,dog.Name
where UGM.UserId='46' and C.SchemaName = 'EDGE'
选择QUOTENAME(Schema_name(t.Schema_id))+
QUOTENAME(对象名称(st.object id))作为表名
,总和(st.row\u计数)为总行数
从sys.dm_db_partition_stats st
st.object\u id=t.object\u id上的内部联接sys.tables t
其中st.index_id<2
t.is_ms_装运=0
按QUOTENAME(Schema_name(t.Schema_id))分组+
QUOTENAME(对象名称(圣对象id))
SELECT QUOTENAME(Schema_name(t.Schema_id)) +
QUOTENAME(object_name(st.object_id)) AS TableName
,SUM(st.row_count) AS Total_Rows
FROM sys.dm_db_partition_stats st
INNER JOIN sys.tables t ON st.object_id = t.object_id
WHERE st.index_id < 2
AND t.is_ms_shipped = 0
GROUP BY QUOTENAME(Schema_name(t.Schema_id)) +
QUOTENAME(object_name(st.object_id))