2014-05-14 5 views
0

저는 각 사용자가 얻고있는 총 투표 수에서 순위를 매기려고하는이 쿼리를 사용합니다. 문제는 투표가 아니라 사용자 ID가 순위를 매기는 것입니다. GROUP BY 때문에 문제가 있지만 하나의 ID가 voted_id 섹션에 여러 번 나타나기 때문에 사용해야합니다.mysql에서 순위 쿼리가 제대로 작동하지 않습니다.

몇 가지 해결책이 있으십니까?

select 
    a.voted_id, 
(select 
    count(b.state) 
    from 
    user_vote as b 
    where 
    b.state=1 and b.voted_id=a.voted_id) as votes, 
@rank:[email protected]+1 as ranking from user_vote as a, 
(select @rank:=0)as rank 
where 
    a.state=1 
group by 
a.voted_id 
order by 
votes asc; 

그래서 문제는 득표가 voted_id에 의해 행해진다는 것입니다.

+0

테이블 구조를 게시 할 수 없어 죄송합니다. 나는 충분한 평판을 가지고 있지 않다 – AndreiTiberiu

+0

당신은 텍스트를 통해 그것을 게시 할 수있다. 당신이 테이블 구조없이 무엇을하려고 하는지를 알기가 어렵 기 때문에. –

답변

0

이것은 좋은 것입니까? DDL이없는 곳에서보기 힘들지 않습니다. & 일부 샘플 데이터 ...

select voted_id, 
     votes, 
     @rank:[email protected] + 1 as rank 
from 
(
select voted_id,count(*) as votes 
from user_vote 
where state=1 
group by voted_id 
order by votes desc 
) t 
join (select @rank:=0) r; 
+0

나는 당신이 테이블 설명없이 어떻게 계산되었는지는 모르지만 완벽하게 일했습니다. – AndreiTiberiu

관련 문제