Вот "хороший" способ сделать это с ROW_NUMBER
, если вы используете MySQL 8 +:
SELECT username, fruits
FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY username ORDER BY id DESC) rn
FROM yourTable
) t
WHERE rn = 1;
В более ранних версиях MySQL мы можем присоединиться к подзапросу, который находит самую последнюю запись для каждого username
:
SELECT t1.username, t1.fruits
FROM yourTable t1
INNER JOIN
(
SELECT username, MAX(id) AS max_id
FROM yourTable
GROUP BY username
) t2
ON t1.username = t2.username AND
t1.id = t2.max_id;