Maison > base de données > tutoriel mysql > Comment résoudre l'erreur MySQL : liste SELECT incompatible avec SQL_MODE=ONLY_FULL_GROUP_BY ?

Comment résoudre l'erreur MySQL : liste SELECT incompatible avec SQL_MODE=ONLY_FULL_GROUP_BY ?

Linda Hamilton
Libérer: 2024-12-30 21:54:11
original
356 Les gens l'ont consulté

How to Resolve MySQL Error: SELECT List Incompatible with SQL_MODE=ONLY_FULL_GROUP_BY?

Erreur MySQL : liste SELECT incompatible avec SQL_MODE=ONLY_FULL_GROUP_BY

Lors de l'exécution d'une requête qui inclut une instruction SELECT avec des colonnes non agrégées dans le clause de regroupement, MySQL peut renvoyer une erreur indiquant que l'expression n'est pas dans la clause GROUP BY. Cela peut se produire lorsque SQL_MODE est défini sur ONLY_FULL_GROUP_BY, ce qui nécessite que toutes les colonnes non agrégées de la liste SELECT soient incluses dans la clause GROUP BY.

Solution 1 : désactiver SQL_MODE=ONLY_FULL_GROUP_BY

Une solution consiste à désactiver le SQL_MODE=ONLY_FULL_GROUP_BY en exécutant la commande suivante :

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Copier après la connexion

Cela permettra à la requête de s'exécuter sans erreur.

Solution 2 : inclure toutes les colonnes non agrégées dans GROUP Clause BY

Une autre solution consiste à inclure toutes les colonnes non agrégées dans le GROUPE Clause PAR. Cela peut être fait en modifiant la requête pour inclure les éléments suivants :

SELECT *
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`, `id`
Copier après la connexion

Cela garantira que toutes les colonnes non agrégées sont incluses dans la clause GROUP BY et que la requête s'exécutera sans erreur.

Solution 3 : Utiliser les fonctions d'agrégation

Pour les meilleures pratiques, envisagez d'utiliser des fonctions d'agrégation pour le colonnes non agrégées au lieu de sélectionner toutes les colonnes. Par exemple, si vous n'avez besoin que du nombre d'enregistrements pour chaque type de preuve, la requête peut être modifiée comme suit :

SELECT `proof_type`, COUNT(*) AS `total_records`
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`
Copier après la connexion

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