mysql только максимальное количество с несколькими максимальными

0

Я ищу запрос, получая только самую большую.

SELECT results.playerid, 
       username, 
       Count(*) AS count 
FROM   results 
       LEFT JOIN players 
              ON results.playerid = players.playerid 
WHERE  points = 5 
GROUP  BY playerid 
ORDER  BY count DESC 

Результат:

+-----------+-----------+-------+
| playerID  | username  | count |
+-----------+-----------+-------+
| 1         | Lorem     | 2     |
| 2         | Ipsum     | 2     |
| 3         | Dolor     | 1     |
+-----------+-----------+-------+

Ожидаемый результат:

+-----------+-----------+-------+
| playerID  | username  | count |
+-----------+-----------+-------+
| 1         | Lorem     | 2     |
| 2         | Ipsum     | 2     |
+-----------+-----------+-------+

Не было бы проблем, если бы был только один самый большой.

Какие-нибудь советы?

Скрипт: http://sqlfiddle.com/#!9/7c74c17/1

  • 0
    Покажите нам текущий и ожидаемый результат. В случае галстуков, что вы хотите вернуть?
  • 0
    Кстати, не связано с вашим вопросом. но вы должны изменить COUNT(*) на COUNT(players.playerID) Players.PlayerID COUNT(players.playerID) противном случае вы не получите результат 0, когда левое соединение не нашло соответствия.
Показать ещё 3 комментария
Теги:
database
join
count
max

1 ответ

-1
Лучший ответ

Сначала вам нужно узнать, какое максимальное значение для group by

SELECT Count(players.playerid) AS count 
FROM   results 
       LEFT JOIN players 
              ON results.playerid = players.playerid 
WHERE  points = 5
GROUP  BY players.playerid
ORDER  BY count DESC
LIMIT 1;

Затем вы используете этот запрос для фильтрации нужного результата.

SQL DEMO

SELECT results.playerid, 
       username, 
       Count(players.playerid ) AS count 
FROM   results 
       LEFT JOIN players 
              ON results.playerid = players.playerid 
WHERE  points = 5 
GROUP  BY playerid 
HAVING COUNT(players.playerid) = (
          SELECT Count(players.playerid) AS count 
          FROM   results 
                 LEFT JOIN players 
                        ON results.playerid = players.playerid 
          WHERE  points = 5
          GROUP  BY players.playerid
          ORDER  BY count DESC
          LIMIT 1
);

ВЫХОД

| playerid | username | count |
|----------|----------|-------|
|        1 |    Lorem |     2 |
|        2 |    Ipsum |     2 |
  • 0
    здорово! благодарю вас!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню