Sql 计算不同行的数目

Sql 计算不同行的数目,sql,sql-server-2008,Sql,Sql Server 2008,我有一个SQL查询,如下所示: SELECT DISTINCT UserId, PoliticianId FROM Votes WHERE UserId= 1010 UserId | PoliticianId 1010 3 1010 10 1010 35 结果如下所示: SELECT DISTINCT UserId, PoliticianId FROM Votes WHERE UserId= 1010 UserId | PoliticianId 1010 3

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

SELECT DISTINCT UserId, PoliticianId
FROM Votes
WHERE UserId= 1010
UserId | PoliticianId
1010     3
1010     10
1010     35
结果如下所示:

SELECT DISTINCT UserId, PoliticianId
FROM Votes
WHERE UserId= 1010
UserId | PoliticianId
1010     3
1010     10
1010     35
有没有办法获取此查询返回的行数?
我尝试了COUNT(*),但没有成功,可能是因为我做了 查询错误。
我知道我可以在服务器上检索所有行并对它们进行计数,但我希望避免这种情况。

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

SELECT  UserId
,       PoliticianId
,       count(*) over ()
FROM    (
        select  distinct UserId
        ,       PoliticianId
        from    Votes
        where   UserId= 1010
        ) as SubQueryAlias
您可以使用()上的
count(*)
显示返回的行数。这似乎是在
distinct
之前应用的,因此在应用
distinct
之后,您必须将
distinct
移动到子查询以获得
count(*)over()

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

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


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


我想这对你有帮助

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

我想这对你有帮助

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

-1在count\u distinct表中没有
,也没有
ID
列。当您在
user\u id=1010
上进行筛选时,按
user\u id
分组只能返回一行。@Andomar,列名已编辑。我只是示例查询,而不是精确的查询。-1没有count\u distinct
表中的
,也没有
ID
列。当您在
user\u id=1010
上进行筛选时,按
user\u id
分组只能返回一行。@Andomar,列名已编辑。我只是简单的查询,不是精确的。这正是我需要的。非常感谢。看来我的解决方案太复杂了。这正是我所需要的。非常感谢。似乎我的解决方案过于复杂了。这返回了所需的值,但它以与结果相同的形式返回(3列表),第三列总是数字3,所以这并不能解决我的问题。它返回3行3列这返回所需的值,但它以与我的结果(3列表)相同的形式返回,第三列总是数字3,因此这并不能解决我的问题。它返回3行3列