En utilisant une sous-requête, vous pouvez obtenir l'id
le plus élevé pour chaque nom, puis sélectionnez le reste des lignes en fonction de cela :
SELECT * FROM table
WHERE id IN (
SELECT MAX(id) FROM table GROUP BY name
)
Si vous préférez, utilisez MIN(id)
pour obtenir le premier enregistrement de chaque nom au lieu du dernier.
Cela peut également être fait avec un INNER JOIN
contre la sous-requête. Pour cela, les performances doivent être similaires, et parfois vous devez vous joindre sur deux colonnes de la sous-requête.
SELECT
table.*
FROM
table
INNER JOIN (
SELECT MAX(id) AS id FROM table GROUP BY name
) maxid ON table.id = maxid.id