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