Выбор отдельных значений в таблице MySQL - PullRequest
2 голосов
/ 17 ноября 2011

Вот моя таблица MySQL:

Таблица лиги (ИД пользователя и крышка являются первичными ключами):

*userid*  *lid*     rank    win     loss     streak  score
---------------------------------------------------------
    2       1        1       2       0         2      10
    2       3        2       1       1         1       5
    5       1        2       1       1         1       5

Я пытаюсь выбрать пользователей с наибольшим количеством баллов только один раз. Например, поскольку идентификатор пользователя 2 находится в лиге (крышке) 1 и 3, в запросе будет выбран только его самый высокий балл. Таким образом, в этом случае будет выбрана строка со счетом 10, так как это лучший результат для пользователей из лиги 1 и 3. Строка с крышкой 3 не будет выбрана.

Таким образом, результаты запроса должны выглядеть следующим образом:

userid  lid     rank    win     loss     streak  score
---------------------------------------------------------
  2      1       1       2       0         2      10
  5      1       2       1       1         1       5

Как вы можете видеть, идентификатор пользователя 2 с крышкой 3 не был в результате, потому что оценка 10 с крышки 1 была выше, чем оценка 5 из лиги 3. Есть идеи?

Ответы [ 3 ]

2 голосов
/ 17 ноября 2011
SELECT l.userid, u.username, l.lid, l.rank, l.win, l.loss, l.streak, l.score
    FROM (SELECT userid, MAX(score) AS MaxScore
              FROM League 
              GROUP BY userid) q
        INNER JOIN League l
            ON q.userid = l.userid
                AND q.MaxScore = l.score
        INNER JOIN users u
            ON l.userid = u.userid
0 голосов
/ 17 ноября 2011

Вот самое простое решение:

SELECT *
FROM League t1 
WHERE 
  t1.lig = (SELECT t2.lig
        FROM League t2
        WHERE t2.userid = t1.userid
        ORDER BY score desc
        LIMIT 1
     )
0 голосов
/ 17 ноября 2011
SELECT *
FROM table t1
WHERE t1.score = (SELECT MAX(t2.score)
  FROM table t2
  WHERE t1.userid = t2.userid)

Это покажет связи, не знаю, хотите ли вы их или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...