Met behulp van een subquery kunt u de hoogste id
. krijgen voor elke naam, selecteer vervolgens de rest van de rijen op basis daarvan:
SELECT * FROM table
WHERE id IN (
SELECT MAX(id) FROM table GROUP BY name
)
Gebruik desgewenst MIN(id)
om de eerste record voor elke naam te krijgen in plaats van de laatste.
Het kan ook met een INNER JOIN
tegen de subquery. Voor dit doel moeten de prestaties vergelijkbaar zijn, en soms moet je op twee meedoen kolommen uit de subquery.
SELECT
table.*
FROM
table
INNER JOIN (
SELECT MAX(id) AS id FROM table GROUP BY name
) maxid ON table.id = maxid.id