Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi est-ce que j'obtiens l'erreur « Requête agrégée sans GROUP BY » dans MySQL 5.7.5 ?

Patricia Arquette
Libérer: 2024-10-25 21:37:29
original
641 Les gens l'ont consulté

Why Am I Getting the

Erreur SQL : "Requête agrégée sans GROUP BY"

MySQL 5.7.14 introduit un changement susceptible de provoquer vos requêtes existantes échouer avec l'erreur "SQLSTATE[42000] : erreur de syntaxe ou violation d'accès : 1140 dans une requête agrégée sans GROUP BY." Cette erreur se produit lorsque vous agrégez une colonne (par exemple, COUNT()) dans la clause SELECT mais n'incluez pas de colonnes non agrégées dans la clause GROUP BY.

Pourquoi l'erreur se produit

Dans les versions antérieures de MySQL, l'agrégation de colonnes sans utiliser de GROUP BY était autorisée. Cependant, pour garantir l'intégrité des données, MySQL 5.7.5 et les versions ultérieures appliquent un mode SQL "strict" ou "only_full_group_by", qui nécessite que toutes les colonnes non agrégées soient incluses dans la clause GROUP BY.

< h3>Options de solution

Vous disposez de deux options pour résoudre ce problème :

1. Modifier les paramètres MySQL

Vous pouvez modifier la configuration de MySQL pour adopter par défaut le comportement hérité qui autorise les colonnes non agrégées en dehors de la clause GROUP BY. Ceci n'est pas recommandé car cela va à l'encontre des meilleures pratiques de l'industrie et peut conduire à des résultats incorrects.

2. Corrigez la requête

Modifiez votre requête pour inclure les colonnes non agrégées dans la clause GROUP BY. Par exemple :

<code class="sql">SELECT id, password, COUNT(id) AS count
FROM users
WHERE email = :email
GROUP BY id, password
LIMIT 1</code>
Copier après la connexion

Exception à la règle

Notez que l'exclusion des colonnes non agrégées de la clause GROUP BY est toujours autorisée dans MySQL 5.7.5. et versions ultérieures si la colonne non agrégée est limitée à une seule valeur. Par exemple, un filtre dans la clause WHERE limiterait la colonne à une seule ligne, ce qui permettrait de l'exclure en toute sécurité de la clause GROUP BY.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!