Il ne renvoie pas ce que vous attendez car le regroupement se produit avant le classement, comme en témoigne la position des clauses dans l'instruction SQL. Vous allez malheureusement devoir devenir plus fantaisiste pour obtenir les rangées que vous voulez. Essayez ceci :
SELECT *
FROM `table`
WHERE `id` = (
SELECT `id`
FROM `table` as `alt`
WHERE `alt`.`otheridentifier` = `table`.`otheridentifier`
ORDER BY `time` DESC
LIMIT 1
)
ORDER BY `time` DESC
LIMIT 3