拉出一个按字段排序的记录

时间:2011-03-16 10:27:31

标签: mysql sql

我有一个简单的SQL查询,如下所示:

SELECT * FROM leaderboard WHERE UserId = '$sessfacebook'"

这会选择我的用户名,facebookid和数字分数。我需要把这条记录拉出去,但如果表格是按照得分排序的话,我需要找出记录的位置。希望这是有道理的。

3 个答案:

答案 0 :(得分:2)

您可以使用其他查询

SELECT count(*) Position
FROM leaderboard
WHERE score >= (
    SELECT score
    FROM leaderboard
    WHERE UserId = '$sessfacebook')

您可以将其作为子查询插入

SELECT *, (
    SELECT count(*)
    FROM leaderboard b
    WHERE b.score >= leaderboard.score) Position
FROM leaderboard
WHERE UserId = '$sessfacebook'

答案 1 :(得分:1)

您可以使用子查询来选择分数较高的记录数:

SELECT  * 
,       (select count(*) from leaderboard lb2 where lb2.score > lb1.score) as Rank
FROM    leaderboard lb1
WHERE   UserId = '$sessfacebook'"

答案 2 :(得分:1)

SELECT * from (SELECT @ranknum := @ranknum + 1 AS rank, 
leaderboard.* FROM leaderboard , (SELECT @ranknum := 0) r order by score desc) 
as sortedboard where USERID = '$sessfacebook' limit 1;

这将创建一个表别名作为排名的排行榜,并从中获取所需的记录。 会为你工作,测试它。