У меня есть таблица, которая содержит (допустим) все время, когда пользователь просматривал определенную веб-страницу. Пользователи могут, конечно, посмотреть на странице более одного раза, так что может быть несколько записей для пользователей и страниц, например:Как выбрать строки из 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
Я хочу, чтобы сделать запрос, который возвращает строки, соответствующие каждой странице смотреть на каждый user WITH THE CATCH. Если пользователь просматривал страницу более одного раза, я получаю строку, соответствующую последнему виду (т. е. наибольшее значение 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 и встроенными запросами, а затем мой мозг взрывается. Какие-либо предложения? Благодаря!
Дубликат вопрос [HTTP: // stackoverflow.com/questions/612231/how-can-i-select-rows-with-maxcolumn-value-distinct-by-another-column-in-sql] – user1486030