Sql server 对使用distinct的查询返回的行进行计数

Sql server 对使用distinct的查询返回的行进行计数,sql-server,sql-server-2008,count,distinct,Sql Server,Sql Server 2008,Count,Distinct,我在此表单中有一个简单的查询: SELECT DISTINCT a, b, c FROM MyTable WHERE a = SomeConditionsEtc 等等 但我需要知道它将返回多少行。最初我是这样做的: SELECT COUNT(DISTINCT a) FROM MyTable WHERE a = SomeConditionsEtc 但如果a包含重复项,而另一个不包含重复项,则这是不可靠的。现在我使用一个嵌套查询: SELECT COUNT(*) FROM (SELECT DIS

我在此表单中有一个简单的查询:

SELECT DISTINCT a, b, c
FROM MyTable
WHERE a = SomeConditionsEtc
等等

但我需要知道它将返回多少行。最初我是这样做的:

SELECT COUNT(DISTINCT a)
FROM MyTable
WHERE a = SomeConditionsEtc
但如果
a
包含重复项,而另一个不包含重复项,则这是不可靠的。现在我使用一个嵌套查询:

SELECT COUNT(*)
FROM (SELECT DISTINCT a, b, c
      FROM MyTable
      WHERE a = SomeConditionsEtc) AS Temp

这是正确的方法还是有更好的方法?

你的问题直截了当,做得很好,而且很简单,我相信你可以在其中加入一些不必要的火箭科学,但这会被夸大。除了你所拥有的,你可以用下面的
分组来说明我的意思,但你基本上也会做同样的事情,得到唯一性并计算它们

SELECT COUNT(1)
FROM (SELECT a
        FROM MyTable
        WHERE a = 'a'
        GROUP BY a, b, c) Temp

你已经看过下面的帖子了吗@山姆:不,我还没看过,谢谢。我想嵌套查询是最简单的解决方案。