Группа SQL с порядком

115
задан OMG Ponies 26 April 2011 в 23:28
поделиться

5 ответов

Во всех версиях MySQL просто исказите агрегат в СПИСКЕ ВЫБОРКИ и порядок псевдонимом:

SELECT COUNT(id) AS theCount, `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY theCount DESC
LIMIT 20
191
ответ дан Scott Noyes 24 November 2019 в 02:23
поделиться

MySQL до версии 5 не позволил агрегатные функции В пунктах ORDER BY.

можно обойти этот предел с синтаксисом устаревшим:

SELECT COUNT(id), `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY 1 DESC
LIMIT 20

1, так как это - первый столбец, на котором Вы хотите сгруппироваться.

51
ответ дан angry person 24 November 2019 в 02:23
поделиться

Я не знаю о 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
8
ответ дан jerhinesmith 24 November 2019 в 02:23
поделиться

В 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
5
ответ дан JosephStyons 24 November 2019 в 02:23
поделиться

можно обойти этот предел с синтаксисом устаревшим: ORDER BY 1 DESC

, Этот синтаксис не удерживается от использования вообще, это - E121-03 от SQL99.

2
ответ дан Damien B 24 November 2019 в 02:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: