MySQL упорядочить по отметке времени последней и сгруппировать строки этой категории с ограничением - PullRequest
0 голосов
/ 22 июня 2011

Заказ по метке времени DESC и группировка по категории с лимитом в Mysql

cat  timestamp
----------------
11   1308748405
11   1308747228
13   1308749273
57   1308748289
11   1308746228

... чтобы получить таблицу формата, где она отсортирована по отметке времени, а также соответствующие строки этой категории, сгруппированные вместе с ограничением. (т.е. сгруппировать по категориям все строки и расположить их по убыванию временных меток, но сохранить группу вместе)

cat  timestamp
----------------
13   1308749273
11   1308748405
11   1308747228
57   1308748389

Ответы [ 3 ]

0 голосов
/ 22 июня 2011
SELECT cat, timestamp
FROM yourtable
ORDER BY timestamp DESC
GROUP BY cat
LIMIT 4

без подробностей, это лучшее, что вы получите.

0 голосов
/ 22 июня 2011

Если вы хотите получить 4 группы на основе сортировки по последней отметке времени. Это может работать:

SELECT tblTes.cat, tblTes.timestamp 
FROM tblTes INNER JOIN (SELECT cat, MAX(TIMESTAMP) AS latest FROM tblTes GROUP BY cat) AS subQuery 
ON tblTes.cat = subQuery.cat AND tblTes.timestamp = subQuery.latest 
ORDER BY tblTes.timestamp DESC LIMIT 4;
0 голосов
/ 22 июня 2011

Я предполагаю, что вы ищете: получить минимальную отметку времени для категории и отсортировать результаты по отметке времени?

SELECT t.cat, t.timestamp
FROM table t
JOIN (SELECT MIN(timestamp) as min_time, cat
        FROM table
        GROUP BY cat) as tmp
      ON (t.cat = tmp.cat AND t.timestamp = tmp.min_time)
ORDER BY 2 DESC
...