计算不同行的数量

时间:2012-12-08 17:27:28

标签: sql sql-server-2008

我有一个如下所示的SQL查询:

SELECT DISTINCT UserId, PoliticianId
FROM Votes
WHERE UserId= 1010

结果如下:

UserId | PoliticianId
1010     3
1010     10
1010     35

有没有办法获取此查询返回的行数? 我尝试过COUNT(*),但它没有用,可能是因为我已经完成了 查询错误。
我知道我可以检索所有行并在服务器上计算它们,但我想避免这种情况。

3 个答案:

答案 0 :(得分:3)

所有这些行都具有相同的UserIdPoliticianId不同,因此您可以使用COUNT(DISTINCT column)

SELECT COUNT(DISTINCT PoliticianId) AS result
FROM Votes
WHERE UserId = 1010 ;

答案 1 :(得分:1)

您可以使用count(*) over ()显示返回的行数。这似乎是在distinct之前应用的,因此在distinct应用后,您必须将count(*) over ()移至子查询才能获得distinct

SELECT  UserId
,       PoliticianId
,       count(*) over ()
FROM    (
        select  distinct UserId
        ,       PoliticianId
        from    Votes
        where   UserId= 1010
        ) as SubQueryAlias

答案 2 :(得分:1)

我认为这会对你有帮助。

    select count(UserId) from (select UserId from Votes where UserId = 1010 group by UserId
, PoliticianId) result;