我有一个简单的SQL查询,如下所示:
SELECT * FROM leaderboard WHERE UserId = '$sessfacebook'"
这会选择我的用户名,facebookid和数字分数。我需要把这条记录拉出去,但如果表格是按照得分排序的话,我需要找出记录的位置。希望这是有道理的。
答案 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;
这将创建一个表别名作为排名的排行榜,并从中获取所需的记录。 会为你工作,测试它。