Вытащите одну запись, упорядоченную по полю - PullRequest
0 голосов
/ 16 марта 2011

У меня есть простой SQL-запрос, который выглядит так:

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

Это выбирает меня имя пользователя, facebookid и числовой счет.Мне нужно вытащить эту запись, но мне нужно выяснить, в каком положении находится запись, если таблица была упорядочена по счету.Надеюсь, что это имеет смысл.

Ответы [ 3 ]

2 голосов
/ 16 марта 2011

Вы можете использовать другой запрос для этого

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 голос
/ 16 марта 2011
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;

Это создаст псевдоним таблицы в виде таблицы лидеров с рангом и получит из нее требуемую запись. Будет работать на вас, проверено.

1 голос
/ 16 марта 2011

Вы можете использовать подзапрос, чтобы выбрать количество записей с более высоким счетом:

SELECT  * 
,       (select count(*) from leaderboard lb2 where lb2.score > lb1.score) as Rank
FROM    leaderboard lb1
WHERE   UserId = '$sessfacebook'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...