2011-04-11 181 views
0

我的一个查询是来自游戏的排名。MSSQL:必须声明标量变量@rownum

查询低于和错误SQL Server Management Studio中显示的是:“必须声明标量变量@rownum”

有什么错呢?

非常感谢!

$sql1_1  = "SET @rownum := 0"; 



$sql2_2  = "SELECT * FROM (
         SELECT @rownum := @rownum + 1 AS rank, totalpoints, useridFB, game2points 
         FROM theuser ORDER BY game2points DESC 
        ) as result WHERE useridFB=1234"; 



     mssql_query($sql1_1); 
     $result = mssql_query($sql2_2); 

     $row = mssql_fetch_array($result); 
     $therank = $row['rank']; 

回答

3

您在SQL Server中使用MySql语法。

使用row_number()函数来重现您当前的逻辑。

SELECT * 
FROM (SELECT row_number() OVER (ORDER BY game2points DESC) AS [rank], 
       totalpoints, 
       useridFB, 
       game2points 
     FROM theuser) AS result 
WHERE useridFB = 1234 

或者您可能想要调查rank,具体取决于您希望如何处理关系。

+0

那么这个:SET @rownum:= 0就是SET row_number()OVER 0 ....对吗?谢谢! – user638009 2011-04-11 15:01:50

+0

@user - 不需要'SET'或变量。 – 2011-04-11 15:02:49

+0

非常感谢! – user638009 2011-04-11 15:43:58