L'exécution de la requête est autorisée à ignorer le ORDER BY
dans le FROM ( SELECT ... )
. C'est probablement la vraie raison de la différence que vous voyez. (Je ne pense pas que la réponse de Gordon soit pertinente.)
Le problème est abordé ici (il y a 4 ans) :https://mariadb.com/kb/en/mariadb/group-by-trick-has-been-optimized-away/ ; qui a une solution, via un paramètre.
D'autres solutions sont ici :http://mysql.rjweb.org/doc.php/groupwise_max ; ils sont conçus pour être efficaces.
Encore une autre possible la solution est d'ajouter un faux LIMIT
avec un grand nombre sur la sous-requête.