Usando uma subconsulta, você pode obter o
id
mais alto para cada nome e selecione o restante das linhas com base nisso:SELECT * FROM table
WHERE id IN (
SELECT MAX(id) FROM table GROUP BY name
)
Se preferir, use
MIN(id)
para obter o primeiro registro de cada nome em vez do último. Também pode ser feito com um
INNER JOIN
contra a subconsulta. Para isso, o desempenho deve ser semelhante e, às vezes, você precisa participar de dois colunas da subconsulta. SELECT
table.*
FROM
table
INNER JOIN (
SELECT MAX(id) AS id FROM table GROUP BY name
) maxid ON table.id = maxid.id