计算使用distinct的查询返回的行

时间:2013-06-07 12:33:01

标签: 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 DISTINCT a, b, c
      FROM MyTable
      WHERE a = SomeConditionsEtc) AS Temp

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

1 个答案:

答案 0 :(得分:1)

你的询问是直截了当的,做的工作,而且很简单,我敢肯定你可以把一些不必要的火箭科学加入其中,但是会过分夸大imho。除了你拥有的东西,你可以使用下面的group by来说明我的意思,但你基本上会做同样的事情,获得​​独特的东西并计算它们。

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