Как быстро найти последнюю запись в таблице?

Всем привет!
Есть таблица с файлами пользователей, надо найти последнюю запись каждого пользователя:

CREATE TABLE `files` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `userId` int(10) unsigned NOT NULL DEFAULT '0',
...
  `uploadAt` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

Получается нам надо сгруппировать по userId, но как сделать чтоб userId соответствовала запись?

SELECT MAX(`uploadAt`), * FROM `files` GROUP BY `userId`

Или
SELECT * FROM `files` WHERE `uploadAt` = MAX(`uploadAt`) GROUP BY `userId`

Или
SELECT * FROM `files` AS a WHERE `uploadAt` = (SELECT MAX(`uploadAt`) FROM `files` AS b WHERE b.userId = a.userId) GROUP BY `userId`

Последний запрос отправляет сервер спать =(

Или что-то другое?
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `t2`.*
    FROM (
        SELECT `userId`, MAX(`uploadAt`) AS `uploadAt`
        FROM `files`
        GROUP BY `userId`
    ) AS `t1`
    JOIN `files` AS `t2` USING (`userId`, `uploadAt`);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zvermafia
@zvermafia
WebDev
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы