Именно поэтому в книжке и написано, что такой вариант больше подходит «пуристам». То есть запрос будет выглядеть правильно, но из-за подзапроса родится временная таблица, что не комильфо.
Допустим, я согласен на введение агрегирующей функции, мне нравится ваш второй вариант. Но мне надо все колонки вместе с id получить. Тогда придётся и её указать в GROUP BY, а в этом случае вернутся все записи без группировки по name. Ok, я могу в SELECT добавить ,MAX(id) и получить нужный результат, но запрос тогда будет выглядеть по-идиотски :(
Именно поэтому в книжке и написано, что такой вариант больше подходит «пуристам». То есть запрос будет выглядеть правильно, но из-за подзапроса родится временная таблица, что не комильфо.