MySQL Неверное использование групповой функции на общем хосте

0

Мне нужно знать команду с наибольшим количеством матчей в определенном городе.

SELECT COUNT(am_matches.team_id) AS matches_count,
am_matches.team_id AS team_id
FROM am_matches
LEFT JOIN am_team ON (am_matches.team_id = am_teams.id)
WHERE am_matches.status = '3' AND am_teams.city_id = '$city_id'
GROUP BY am_matches.team_id
ORDER BY COUNT(am_matches.team_id) DESC LIMIT 1

Это работает на локальном сервере (wamp), но на общем хосте выдает "Недопустимое использование групповой функции". Есть ли другой способ получить это? Мне нужно сделать много похожих запросов, поэтому я хотел бы узнать более читаемый подход получения похожих значений. Спасибо.

  • 2
    Измените ORDER BY COUNT (am_matches.team_id) DESC LIMIT 1 на ORDER BY 1 DESC LIMIT 1
  • 0
    Вау! это было легко .. Что делает «1»?
Показать ещё 1 комментарий
Теги:
group-by
mysql-error-1111

1 ответ

0

Вы можете заказать по "1", как сказал комментарий, или вы можете использовать псевдоним столбца "matches_count". Это предпочтительнее и, как ожидается, использовать псевдоним, а не числовой индекс, для ясности и удобочитаемости. Вы бы только повторно вызывали функции группировки в предложении HAVING, никогда в ORDER. К тому времени, когда ORDER увидит ваши результаты, данные будут собраны и просто отсортированы.

ORDER BY matches_count DESC LIMIT 1

Ещё вопросы

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