DBAtlas · Atlas d'exploitation des bases de données

1055: Expression not in GROUP BY (only_full_group_by) (expression absente du GROUP BY)

MySQL

Que signifie cette erreur ?

Une colonne qui n'est ni dans le GROUP BY ni encapsulée dans une fonction d'agrégat a été utilisée dans la liste SELECT ou dans HAVING/ORDER BY. Le mode SQL ONLY_FULL_GROUP_BY étant activé, MySQL refuse cette expression non déterministe.

Cause

La requête sélectionne directement une colonne autre que les colonnes regroupées, mais cette colonne peut ne pas avoir une valeur unique par groupe. ONLY_FULL_GROUP_BY est activé par défaut dans MySQL 5.7+ ; les requêtes qui reposent sur l'ancien comportement permissif de GROUP BY lèvent cette erreur.

Comment la corriger

Ajoutez la colonne à la liste GROUP BY ou encapsulez-la dans une fonction d'agrégat (MAX(), MIN(), ANY_VALUE()). Si vous savez que la valeur est réellement unique au sein du groupe, ANY_VALUE() supprime volontairement l'ambiguïté. Désactiver le mode (retirer ONLY_FULL_GROUP_BY de sql_mode) au lieu de corriger la requête réintroduit le risque de résultats faux ; évitez-le.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur