Простой вопрос MySQL - MAX (поле)? - PullRequest
2 голосов
/ 25 июня 2010

Привет, простой вопрос
Я знаю, как получить наиболее повторяющееся поле из таблицы

SELECT MAX(field) FROM table

Но как мне получить второе наиболее повторяющееся поле из таблицы?

Спасибо.

Ответы [ 4 ]

5 голосов
/ 25 июня 2010

Вы можете сделать это, используя LIMIT для установки смещения.

 SELECT field FROM table ORDER BY field DESC LIMIT 1,1;
2 голосов
/ 25 июня 2010

Если производительность важна для вас, это может помочь избежать сортировки:

SET @a := (SELECT MAX(field) FROM table);
SELECT MAX(field) FROM table WHERE field != @a;

В качестве альтернативы вы можете сохранить значение @a в коде.

1 голос
/ 25 июня 2010

Definition ( from about.com ): ограничение используется для ограничения результатов запроса MySQL теми, которые попадают в указанный диапазон.Вы можете использовать его для отображения первого числа результатов X или для отображения диапазона результатов X - Y.Он сформулирован как Limit X, Y и включен в конце вашего запроса.X - начальная точка (помните, что первая запись равна 0), а Y - продолжительность (сколько записей нужно отобразить).Также известен как: Примеры результатов диапазона:

 SELECT * FROM `your_table` LIMIT 0, 10 

отобразит первые 10 результатов из базы данных.

 SELECT * FROM `your_table` LIMIT 5, 5 

покажет записи 6, 7, 8, 9 и 10

 SELECT * FROM `your_table` ORDER BY 'FIELD' DESC LIMIT 1, 1 

покажет вторую наиболее повторяющуюся запись

0 голосов
/ 25 июня 2010
SELECT
    field,
    COUNT(*) as cnt
FROM table
GROUP BY field
ORDER BY cnt DESC
LIMIT 1, 1
...