Три запроса:
SET @id := 0;
UPDATE `table` AS `t1`
INNER JOIN (SELECT MIN(`last_use`) AS `last_use` FROM `table`) AS `t2` USING(`last_use`)
SET `t1`.`last_use` = NOW()
WHERE @id = 0 AND @id := `id`;
SELECT *
FROM `table`
WHERE `id` = @id;
Первый запрос обнуляет переменную для ограничения изменений одной строкой, LIMIT 1 не подходит для составных запросов.
Второй запрос атомарный, изменение `last_use` и присвоение переменной проходят одновременно, без пересечения с другими запросами.
Переменная @id остаётся в контексте соединения и по ней третьим запросом выбирается строка.