2013-06-26 2 views
1

이 문제에 대해 지금까지 stackoverflow에 대한 해결책을 보았고 각 문제가 다르게 보입니다. 그래서 새로운 질문을하기로했습니다.알 수없는 열을 이미 열에 입력했을 때

내 목표는 상승 손상을 사용하여 순위 열을 만드는 것입니다

...

SET @rownum := 0; 

SELECT rank, damage, playerID FROM (
         SELECT @rownum := @rownum + 1 AS rank, damage, playerID 
         FROM PlayerStats WHERE playerID > 20130000000000 ORDER BY damage DESC, modified ASC 
        ) as result WHERE playerID='20130000000004' 

그러나, 다시 '필드 목록에서 알 수없는 열 "손상"'다음은

"playerID","ancientBossID","damage","eventEnergy" 

"20130000000004","2012000000000382","19033","38" 
"20130000000078","2012000000000019","0","30" 
"20130000000066","2012000000000242","0",30" 
"20130000000080","2012000000000024","270","25" 
"20130000000041","2012000000000133","5808","2" 
"20130000000071","2012000000000030","694","30" 
"20130000000055","2012000000000189","0","30" 

답변

0

와보고 외관 변경 사항이있는 쿼리 (기본은 @rownum의 하위 쿼리입니다)

SELECT rank, damage, playerID 
FROM 
(
    SELECT @rownum := @rownum + 1 rank, damage, playerID 
    FROM PlayerStats, (SELECT @rownum := 0) n 
    WHERE playerID > 20130000000000 
    ORDER BY damage DESC, modified 
) r 
-- WHERE playerID='20130000000004' 
ORDER BY rank 

그리고 완벽하게 잘 작동합니다. 여기에 SQLFiddle 데모가 있습니다.

+0

정말 감사합니다. 나는 여전히 원래 쿼리가 작동하지 않는 이유에 대해 머리를 찰 Im하고 있습니다. – kassarin

1
SELECT rank, damage, playerID,modified FROM (
         SELECT ROW_NUMBER() over(ORDER BY damage DESC, modified ASC) AS rank, damage, playerID,modified 
         FROM PlayerStats WHERE playerID > 20130000000000 
        ) as result WHERE playerID='20130000000004' 
관련 문제