你这个问题还有很大改进空间,但是看你的语句。我觉得说多了你不一定看得懂,你试试这个脚本吧,比较暴力,但是应该能出你要的结果SELECT a.* , b.a_count FROM ( SELECT DISTINCT COUNT(b.UserId) AS u_count , a.[TeachingClasses] FROM [dbo].[Classes] a LEFT JOIN [Classes_User] b ON a.[TeachingClasses] = b.[TeachingClasses] GROUP BY a.[TeachingClasses] ) a INNER JOIN ( SELECT DISTINCT COUNT(c.UserId) AS a_count , a.[TeachingClasses] FROM [dbo].[Classes] a LEFT JOIN [dbo].[Classes_ApproveUser] c ON a.[TeachingClasses] = c.[TeachingClasses] GROUP BY a.[TeachingClasses] ) b ON a.[TeachingClasses] = b.[TeachingClasses]
b.a_count
FROM ( SELECT DISTINCT
COUNT(b.UserId) AS u_count ,
a.[TeachingClasses]
FROM [dbo].[Classes] a
LEFT JOIN [Classes_User] b ON a.[TeachingClasses] = b.[TeachingClasses]
GROUP BY a.[TeachingClasses]
) a
INNER JOIN ( SELECT DISTINCT
COUNT(c.UserId) AS a_count ,
a.[TeachingClasses]
FROM [dbo].[Classes] a
LEFT JOIN [dbo].[Classes_ApproveUser] c ON a.[TeachingClasses] = c.[TeachingClasses]
GROUP BY a.[TeachingClasses]
) b ON a.[TeachingClasses] = b.[TeachingClasses]