Sql 计算不同行的数目
我有一个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
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列