Отображение единственного разряда в таблице MySQL

У меня есть таблица, названная '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?

5
задан OMG Ponies 15 June 2010 в 21:59
поделиться

2 ответа

, чтобы подтвердить отличный ответ 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'
1
ответ дан 14 December 2019 в 04:38
поделиться

Этот стиль гарантирует, что при назначении значения PI будет использоваться максимальная точность, доступная в ЛЮБОЙ архитектуре.

-121--1018855-

Точно не следует использовать Microsoft.StartHttp.

Из блога Microsoft XML Team : Использование правильной версии MSXML в Internet Explorer :

MSXML2 в сравнении с пространством имен Microsoft - Я также видел много кода, который создает экземпляр « Microsoft.XMLHTTP » Объект ActiveX, а не MSXML2.XMLHTTP.3.0 или MSXML2.XMLHTTP.6.0 при использовании 6.0. Пространство имен «Microsoft» фактически более старое и реализовано только в MSXML3 для поддержки устаревших версий. Его к сожалению, мы использовали название «лучше» на старой версии, но придерживаться пространство имен «msxml2» при создании экземпляра объекты.

-121--3995916-

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 .

7
ответ дан 14 December 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: