Во всех версиях MySQL просто исказите агрегат в СПИСКЕ ВЫБОРКИ и порядок псевдонимом:
SELECT COUNT(id) AS theCount, `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY theCount DESC
LIMIT 20
MySQL до версии 5 не позволил агрегатные функции В пунктах ORDER BY.
можно обойти этот предел с синтаксисом устаревшим:
SELECT COUNT(id), `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY 1 DESC
LIMIT 20
1, так как это - первый столбец, на котором Вы хотите сгруппироваться.
Я не знаю о MySQL, но в SQL MS, можно использовать индекс столбца в order by
пункт. Я сделал это прежде при выполнении количеств с group by
с, поскольку она имеет тенденцию быть легче работать с.
Так
SELECT COUNT(id), `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY COUNT(id) DESC
LIMIT 20
Становится
SELECT COUNT(id), `Tag` from `images-tags`
GROUP BY `Tag`
ORDER 1 DESC
LIMIT 20
В Oracle что-то вроде этого работает приятно для разделения подсчета и упорядочивания немного лучше. Я не уверен, будет ли это работать в MySql 4.
select 'Tag', counts.cnt
from
(
select count(*) as cnt, 'Tag'
from 'images-tags'
group by 'tag'
) counts
order by counts.cnt desc
можно обойти этот предел с синтаксисом устаревшим: ORDER BY 1 DESC
, Этот синтаксис не удерживается от использования вообще, это - E121-03 от SQL99.