我有一个如下所示的 SQL 查询:
SELECT DISTINCT UserId, PoliticianId
FROM Votes
WHERE UserId= 1010
结果如下所示:
UserId | PoliticianId
1010 3
1010 10
1010 35
有没有办法获取此查询返回的行数?
我试过 COUNT(*) 但它没有用,可能是因为我做错了查询。
我知道我可以检索所有行并在服务器上对它们进行计数,但我想避免这种情况。
我有一个如下所示的 SQL 查询:
SELECT DISTINCT UserId, PoliticianId
FROM Votes
WHERE UserId= 1010
结果如下所示:
UserId | PoliticianId
1010 3
1010 10
1010 35
有没有办法获取此查询返回的行数?
我试过 COUNT(*) 但它没有用,可能是因为我做错了查询。
我知道我可以检索所有行并在服务器上对它们进行计数,但我想避免这种情况。
所有这些行都相同UserId
但不同PoliticianId
,因此您可以使用COUNT(DISTINCT column)
:
SELECT COUNT(DISTINCT PoliticianId) AS result
FROM Votes
WHERE UserId = 1010 ;
您可以使用count(*) over ()
来显示返回的行数。这似乎是在应用之前应用distinct
的,因此您必须移动distinct
到子查询才能count(*) over ()
在distinct
应用之后。
SELECT UserId
, PoliticianId
, count(*) over ()
FROM (
select distinct UserId
, PoliticianId
from Votes
where UserId= 1010
) as SubQueryAlias
我想这会对你有所帮助。
select count(UserId) from (select UserId from Votes where UserId = 1010 group by UserId
, PoliticianId) result;