【发布时间】:2011-06-01 20:35:50
【问题描述】:
我需要得到一个用户列表,按点排名,并且从我的命令行(MySQL)能够生成必要的代码:
SET @rank=0;
SELECT rank, iduser, pontos FROM (
SELECT @rank:=@rank+1 AS rank,
SUM(points.points) AS pontos,
points.iduser,
users.name,
users.idade
FROM points
INNER JOIN
users
ON (points.iduser = users.id)
WHERE (users.idade >= %s) AND (users.idade <= %s)
GROUP BY points.iduser ORDER BY pontos DESC) AS totals WHERE iduser = %s
问题是我需要在 AMFPHP 上运行它并且我已经在一个测试 PHP 文件中对其进行了测试,似乎我不能在同一个“mysql_query”中使用 SET 和 SELECT。
我已经看过并且有些人习惯于使用 mysql_query 来执行此操作(我已经对其进行了测试并且可以正常工作),但是我可以相信这是有效且无错误的吗?它是否像在 MySQL 事务中一样工作,或者在单独的查询中设置 @rank 可能会导致意外结果?
【问题讨论】: