Выберите строки на основе количества дубликатов, упорядоченных по алфавиту - PullRequest
0 голосов
/ 31 января 2011

Я пытаюсь выбрать x самых «популярных» записей из таблицы, где есть несколько повторяющихся записей. До сих пор я возвращал записи, основанные на количестве дубликатов полей, но они мне также нужны в алфавитном порядке.

Например:

SELECT country, COUNT(*) TotalCount 
FROM destinations
GROUP BY country
HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC 
LIMIT 4

Это вернет записи как:

страна - TotalCount
Мексика - 15
Куба - 12
США - 10
Австралия - 5

Как бы я мог вернуть их по заказу страны? Я попытался изменить ORDER BY на поле страны, но тогда он игнорирует популярность, возвращая записи с любым количеством дубликатов.

Будет ли выбор внутри выбора быть ответом / возможным?

Ответы [ 2 ]

2 голосов
/ 31 января 2011
SELECT country, count 
FROM 
           (SELECT country, COUNT(*) as count 
            FROM ... 
             HAVING ...) as Dup 
ORDER BY
        country
1 голос
/ 31 января 2011

MySQL не может просто сделать это:

Select country
     , count(*)
  from theTable
 group by country
having count(*) > 1
 order by country
...