Мне нужно знать команду с наибольшим количеством матчей в определенном городе.
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), но на общем хосте выдает "Недопустимое использование групповой функции". Есть ли другой способ получить это? Мне нужно сделать много похожих запросов, поэтому я хотел бы узнать более читаемый подход получения похожих значений. Спасибо.
Вы можете заказать по "1", как сказал комментарий, или вы можете использовать псевдоним столбца "matches_count". Это предпочтительнее и, как ожидается, использовать псевдоним, а не числовой индекс, для ясности и удобочитаемости. Вы бы только повторно вызывали функции группировки в предложении HAVING, никогда в ORDER. К тому времени, когда ORDER увидит ваши результаты, данные будут собраны и просто отсортированы.
ORDER BY matches_count DESC LIMIT 1