Как выбрать строки из MySQL на основе максимального значения столбца + группировка

У меня есть таблица, которая содержит (скажем,) все случаи, когда пользователь просматривал определенную веб-страницу . Пользователи, конечно, могут просматривать страницу более одного раза, поэтому для пользователей и страниц может быть несколько записей, например:

nid     time    user  page_id
 25     8000       4      467
 24     7000       1      482
 23     6000       1      484
 22     5000       1      482
 21     4000       5      467
 20     3000       4      467

Я хочу сделать запрос, который возвращает строки, соответствующие каждой странице, просматриваемой каждым пользователем. ЧТО, если пользователь просматривал страницу более одного раза, я получаю строку, соответствующую самому последнему просмотру (т.е. наибольшему значению TIME). Таким образом, я должен получить следующее:

nid     time    user  page_id
 25     8000       4      467
 24     7000       1      482
 23     6000       1      484
 21     4000       5      467

Мы теряем строку 22, потому что пользователь 1 просмотрел страницу 482 позже, и мы теряем строку 20, потому что пользователь 4 просматривал страницу 467 позже.

У меня почти есть это понял, но не могу взломать, в то же время убеждая себя, что результаты, которые я получаю, будут в целом правильными, а не просто случайностью моих тестовых примеров. Я продолжаю переходить между запросами GROUP BY или DISTINCT и встроенными запросами, а затем мой мозг взрывается. Какие-либо предложения? Спасибо!

14
задан Jim Miller 28 January 2011 в 17:59
поделиться