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

これが役立つと思います。

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

count(*) over ()返された行数を表示するために使用できます。これは の前に適用されるように見えるため、適用後に取得するにはサブクエリにdistinct移動する必要があります。distinctcount(*) 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 に答える