我的排名计算查询
SELECT @i := @i +1 AS rank, t . *
FROM groups t, (
SELECT @i :=0
)foo
WHERE (
t.group_id = '1'
)
ORDER BY t.views DESC
)r
WHERE r.id =4
在 phpmyadmin 中以 root 身份登录,它会正确计算所有内容。通过php使用php的mysql账号,输出计算不正确。它不计算排名,它获取所有行,找到我给它的 ID 的行号,然后它返回行号相对于它之前的所有行的位置。
因此,如果有 5 行,并且 r.id = 4 在表中的第 4 行,它会忽略 t.views 的顺序,只告诉我 id #4 是表中的第 4 行。r.id = 1000 是表中的第 1000 位。它不会告诉我它的等级。当我以 root 身份运行查询时,它会正确告诉我排名。
我假设需要为 php mysql 用户授予某种权限才能允许使用@'s?这是我对它的唯一合乎逻辑的解释,似乎它无视逻辑。有谁知道权限是什么?