1

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

SELECT DISTINCT UserId, PoliticianId
FROM Votes
WHERE UserId= 1010

结果如下所示:

UserId | PoliticianId
1010     3
1010     10
1010     35

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

4

3 回答 3

3

所有这些行都相同UserId但不同PoliticianId,因此您可以使用COUNT(DISTINCT column)

SELECT COUNT(DISTINCT PoliticianId) AS result
FROM Votes
WHERE UserId = 1010 ;
于 2012-12-08T17:31:54.883 回答
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
于 2012-12-08T17:28:36.943 回答
1

我想这会对你有所帮助。

    select count(UserId) from (select UserId from Votes where UserId = 1010 group by UserId
, PoliticianId) result;
于 2012-12-08T17:39:39.197 回答