У меня есть таблица тегов, и я хочу получить наибольшее количество тегов из списка.
Пример данных выглядит так
id (1) tag ('night')
id (2) tag ('awesome')
id (3) tag ('night')
с помощью
SELECT COUNT(*), `Tag` from `images-tags`
GROUP BY `Tag`
возвращает мне данные, которые я ищу идеально. Однако я хотел бы организовать его так, чтобы сначала было наибольшее количество тегов, и ограничить его отправкой мне только первых 20 или около того.
Я пробовал это ...
SELECT COUNT(id), `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY COUNT(id) DESC
LIMIT 20
и я продолжаю получать "Недопустимое использование групповой функции - ErrNr 1111"
Что я делаю не так?
Я использую MySQL 4.1.25-Debian
mysql
sql
mysql-error-1111
maxsilver
источник
источник
MySQL до версии 5 не допускал агрегатных функций в предложениях ORDER BY.
Вы можете обойти это ограничение с помощью устаревшего синтаксиса:
1, поскольку это первый столбец, по которому вы хотите сгруппировать.
источник
Я не знаю о MySQL, но в MS SQL вы можете использовать индекс столбца в
order by
предложении. Я делал это раньше, когда делал счет сgroup by
s, так как с ним, как правило, легче работать.Так
становится
источник
В Oracle что-то вроде этого прекрасно работает, чтобы немного лучше разделить подсчет и порядок. Не уверен, будет ли это работать в MySql 4.
источник
) as counts
, но все равно работало безas
детали.Этот синтаксис вообще не является устаревшим, это E121-03 из SQL99.
источник
Попробуйте этот запрос
источник