我有一个如下所示的SQL查询:
SELECT DISTINCT UserId, PoliticianId
FROM Votes
WHERE UserId= 1010
结果如下:
UserId | PoliticianId
1010 3
1010 10
1010 35
有没有办法获取此查询返回的行数?
我尝试过COUNT(*),但它没有用,可能是因为我已经完成了
查询错误。
我知道我可以检索所有行并在服务器上计算它们,但我想避免这种情况。
答案 0 :(得分:3)
所有这些行都具有相同的UserId
但PoliticianId
不同,因此您可以使用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;