Mysql
 sql >> Base de données >  >> RDS >> Mysql

La requête pour le top N par code de groupe fonctionne pour MySQL mais un résultat différent pour MariaDB

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.