2013-04-04 4 views
3

테이블의 행 번호를 가져 오려고합니다. 는 지금까지 내 SQL 프롬프트입니다 :테이블의 MySQL 행 번호

SELECT @i = @i + 1 AS Rank, x.Name, x.PartyName, x.ConstituencyName, x.Votes 
FROM (
    SELECT CONCAT(t1.Firstname, ' ', t1.Lastname) AS Name, t1.PartyName, t1.ConstituencyName, COALESCE(t2.Count, 0) AS Votes 
     FROM (
      (SELECT db.user.PID, db.user.Firstname, db.user.Lastname, db.party.PartyName, db.constituency.ConstituencyName 
       FROM db.user 
       LEFT JOIN db.party ON db.user.PartyId = db.party.PartyID 
       LEFT JOIN db.constituency ON db.user.CID = db.constituency.CID 
       WHERE db.user.PartyId IS NOT NULL 
       AND db.user.CID IS NOT NULL 
      ) t1 
      LEFT JOIN 
      (SELECT db.user.Vote, COUNT(*) AS 'Count' 
       FROM db.user 
       GROUP BY db.user.Vote 
      ) t2 
     ON 
      t1.PID = t2.Vote 
     ORDER BY t2.Count DESC) 
     ) x, 
(SELECT @i:=1) r 

그래서이 기본적으로 수행하는 것은 처음에는 (즉, 정보가 2 개 개의 다른 테이블에서 얻는다) T1 테이블을 만든 다음 내가 얻을 수있는 테이블 T2로 참여한다는 것입니다 모든 후보자는 총 투표권을가집니다. 그런 다음 해당 테이블을 'x'로 표시하고 행 번호를 초기화해야하는 'r'테이블과 조인했습니다 (행 번호에 대한 온라인 자습서 사용). 그러나이 SQL 프롬프트를 실행할 때 다음 결과를 얻었습니다.

Rank Name PartyName ConstituencyName Votes 
0  Name1 Party1  Constituency1  700 
0  Name2 Party1  Constituency1  550 

모든 제안 사항을 크게 환영 할 것입니다.

답변

3

이 사용자 변수이고 당신은 :=하지 =

SELECT @i := @i + 1 AS Rank,... 
+0

OMG를 사용해야합니다. 나는 그 주석을 이전에 사용하기도했다. (그러나 숫자가 엉망이되어서 다른 기능을 사용했기 때문이다.) 그래,이 트릭을했다. 감사! – Visna

+0

당신은'')'' –

관련 문제