MYSQL Group Gy заказываете с Count? - PullRequest
0 голосов
/ 19 апреля 2011

Я пытаюсь сделать что-то похожее на Выберите 3 самые последние записи, в которых значения одного столбца различны , но с количеством, что означает, что мне нужно сохранить группу.

Используя тот же пример:

 id       time      text      otheridentifier
-------------------------------------------
1        6         apple     4
2        7         orange    4
3        8         banana    3
4        9         pear      3
5        10        grape     2

SELECT *, COUNT(*) FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3

вернул бы id 5, 3, 1 с правильными счетами, но я хочу 5, 4, 2.

Решение в томсообщение было

SELECT * FROM 'table' WHERE 'id' = (SELECT 'id'
FROM 'table' as 'alt'
WHERE 'alt'.'otheridentifier' = 'table'.'otheridentifier'
ORDER BY 'time' DESC
LIMIT 1) ORDER BY 'time' DESC LIMIT 3

, но я не вижу, как получить счет, так как мне нужна группировка там: я получаю ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause, если я добавляю COUNT (*) в начало этого.

1 Ответ

0 голосов
/ 20 апреля 2011
SELECT *, COUNT(*)
FROM `table`
GROUP BY (`otheridentifier`)
ORDER BY COUNT(*) DESC LIMIT 3
^^^^^^^^^^^^^^^^^

просто измените предложение order-by. упорядочение выполняется после завершения группировки / агрегирования, поэтому вы можете сортировать результаты этих агрегатных функций.

...