У меня есть таблица, названная 'highscores', который похож на это.
id udid name score
1 1111 Mike 200
2 3333 Joe 300
3 4444 Billy 50
4 0000 Loser 10
5 DDDD Face 400
Учитывая определенный udid, я хочу возвратить разряд той строки их значением счета.
т.е. если udid, данный = 0000, я должен возвратиться 5.
Какая-либо идея, как записать этот запрос для базы данных MySQL?
, чтобы подтвердить отличный ответ OMG, который является общем случае Несколько высоких баллов на UDID, вот запрос на основе предварительного условия ровно одна запись на UDID:
SELECT rank
FROM
(SELECT @rownum := @rownum + 1 AS rank, score, udid
FROM highscores
JOIN (SELECT @rownum := 0) r
ORDER BY highscores.score DESC) x
WHERE x.udid = '0000'
Этот стиль гарантирует, что при назначении значения PI будет использоваться максимальная точность, доступная в ЛЮБОЙ архитектуре.
-121--1018855-Точно не следует использовать Microsoft.StartHttp.
Из блога Microsoft XML Team : Использование правильной версии MSXML в Internet Explorer :
-121--3995916-MSXML2 в сравнении с пространством имен Microsoft - Я также видел много кода, который создает экземпляр «
Microsoft.XMLHTTP
» Объект ActiveX, а неMSXML2.XMLHTTP.3.0
илиMSXML2.XMLHTTP.6.0
при использовании 6.0. Пространство имен «Microsoft» фактически более старое и реализовано только в MSXML3 для поддержки устаревших версий. Его к сожалению, мы использовали название «лучше» на старой версии, но придерживаться пространство имен «msxml2» при создании экземпляра объекты.
MySQL не имеет никакой функции анализа/ранжирования, но вы можете использовать переменную для искусственного создания значения ранга:
SELECT t.id,
t.udid,
t.name,
t.score,
@rownum := @rownum + 1 AS rank
FROM HIGHSCORES t
JOIN (SELECT @rownum := 0) r
ORDER BY t.score DESC
Чтобы увидеть, какой ранг связан с UDID
«0000», используйте:
SELECT MAX(x.rank) AS rank
FROM (SELECT t.id,
t.udid,
t.name,
t.score,
@rownum := @rownum + 1 AS rank
FROM HIGHSCORES t
JOIN (SELECT @rownum := 0) r
ORDER BY t.score DESC) x
WHERE x.udid = '0000'
Требуется MAX
, если у пользователя несколько высоких Кроме того, нельзя использовать MAX
и ORDER BY rank LIMIT 1
.