MySQL - выбор наиболее часто встречающихся записей - PullRequest
3 голосов
/ 03 апреля 2010

Должно быть простым.

База данных mydb . Один из столбцов: mydata.

Какой SELECT запрос мне нужен, чтобы выбрать 3 самых популярных результата из mydata , но отсортированных по алфавиту?

Например, если мои данные таковы:

mydata
======
kilo (x 1 occurrence)
lima (x 9 occurrences)
golf (x 5 occurrences)
echo (x 9 occurrences)
zulu (x 8 occurrences)

Как мне получить «echo, lima, zulu», которые являются тремя наиболее часто встречающимися записями, отсортированными по алфавиту? Спасибо!

РЕДАКТИРОВАТЬ: просто чтобы добавить, они должны быть отдельными записями. Спасибо!

Ответы [ 3 ]

2 голосов
/ 03 апреля 2010

Используйте внутренний выбор, чтобы выбрать результаты, которые вы хотите, и внешний выбор, чтобы поместить их в алфавитный порядок.

SELECT mydata
FROM (
    SELECT mydata
    FROM mytable
    GROUP BY mydata
    ORDER BY COUNT(mydata) DESC
    LIMIT 3
) AS T1
ORDER BY mydata

Результат:

'echo'
'lima'
'zulu'

Данные испытаний:

CREATE TABLE mytable (mydata VARCHAR(100) NOT NULL);
INSERT INTO mytable (mydata) VALUES
    ('kilo'),
    ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'),
    ('golf'), ('golf'), ('golf'), ('golf'), ('golf'),
    ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'),
    ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu');
0 голосов
/ 03 апреля 2010
SELECT mydata
FROM mytable
GROUP BY mydata
ORDER BY COUNT(mydata) DESC, mydata
LIMIT 3
0 голосов
/ 03 апреля 2010
SELECT mydata 
FROM mytable 
GROUP BY mydata 
ORDER BY count(id), mydata

не уверен, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...