Maison >base de données >tutoriel mysql >Pourquoi ne puis-je pas agréger des requêtes dans MySQL sans clause GROUP BY ?

Pourquoi ne puis-je pas agréger des requêtes dans MySQL sans clause GROUP BY ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 02:35:02988parcourir

Why Can't I Aggregate Queries in MySQL Without a GROUP BY Clause?

Agrégation de requêtes sans GROUP BY dans MySQL

Votre requête rencontre une erreur de syntaxe lors de l'agrégation de données sans spécifier de clause GROUP BY. Ce comportement a été introduit dans MySQL 5.7.5 dans le cadre d'un effort visant à garantir l'intégrité de l'agrégation des données.

Le message d'erreur explique que les colonnes non agrégées, telles que l'identifiant dans votre requête, ne peuvent pas apparaître dans le SELECT. list lorsqu'une fonction d'agrégation (telle que COUNT()) est utilisée sans clause GROUP BY. Cela garantit que les résultats de l'agrégation sont précis et cohérents.

Résoudre l'erreur

Vous disposez de deux options pour résoudre cette erreur :

  1. Modifier les paramètres MySQL : Vous pouvez modifier la configuration MySQL pour revenir au comportement précédent, où les colonnes non agrégées sont autorisées dans la liste SELECT sans clause GROUP BY. Cependant, cela n'est pas recommandé car cela viole les meilleures pratiques en matière d'agrégation de données.
  2. Modifiez votre requête : La solution préférée consiste à modifier votre requête pour inclure une clause GROUP BY qui regroupe les résultats par les colonnes non agrégées. Dans votre cas, vous pouvez utiliser la requête mise à jour suivante :
SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1

Alternativement, si vous pouvez vous assurer que la colonne non agrégée (par exemple, id) est limitée à une seule valeur dans WHERE clause, vous pouvez l'exclure de la clause GROUP BY. Reportez-vous au lien fourni pour des exemples de cette exception.

En utilisant l'une de ces méthodes, vous pouvez résoudre l'erreur et garantir l'agrégation correcte des données dans votre requête MySQL.

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!

Déclaration:
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