今天我花了很多时间尝试各种事情,但似乎都不起作用。这是我的情况,我希望能够根据特定排序行中的 ID 选择行的排名
例如,如果我的查询类似于:
SELECT id, name FROM people ORDER BY name ASC
结果如下:
id name
3 Andrew
1 Bob
5 Joe
4 John
2 Steve
我想获得排名(它最终出现在结果中的哪一行)而不返回所有行并循环抛出它们,直到到达我想要的行(在 PHP 中)。
例如,我想选择“Steve”的“等级”,以便在本例中返回 5(不是他的 id,而是上面查询中他姓名的“等级”)。
同样,我希望能够选择 ID 为 1 的任何行的排名。对于此示例,我希望返回 2 的“排名”(因为在结果行中,ID 为1)没有别的。
我已经尽可能多地用谷歌搜索不同的结果...要么对较大的表进行非常慢的查询,要么必须创建各种临时表和用户变量(前者我真的很想避免,后者我想我可以忍受)。
任何帮助或见解将不胜感激。
from 巧妙的软件:
SELECT p1.id, p1.name, COUNT( p2.name ) AS Rank
FROM people p1
JOIN people p2
ON p1.name < p2.name
OR (
p1.name = p2.name
AND p1.id = p2.id
)
GROUP BY p1.id, p1.name
ORDER BY p1.name DESC , p1.id DESC
LIMIT 4,1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)