MySQL only_full_group_by
Erreur: un guide complet
MySQL 5.7 a introduit le mode only_full_group_by
SQL, conduisant à des erreurs comme celle-ci:
<code>Expression #1 of SELECT list is not in GROUP BY clause and contains non-aggregated column 'support_desk.mod_users_groups.group_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by</code>
Cette erreur surgit car only_full_group_by
oblige que toutes les colonnes de la liste SELECT
, à l'exclusion des colonnes agrégées, doivent également apparaître dans la clause GROUP BY
. Les versions MySQL précédentes n'ont pas appliqué cela, ce qui donne potentiellement des résultats ambigus.
Solutions et dépannage
Voici comment résoudre ce problème:
1. Incluez la colonne dans GROUP BY
:
La correction la plus simple consiste à ajouter la colonne incriminée (group_id
dans cet exemple) à votre clause GROUP BY
:
... GROUP BY group_name, group_id ...
2. Agréger ou utiliser ANY_VALUE()
:
Si vous n'avez besoin que d'une seule valeur à partir de colonnes non agrégées dans chaque groupe, utilisez des fonctions agrégées comme COUNT()
ou SUM()
. Alternativement, ANY_VALUE()
renvoie une valeur arbitraire du groupe:
SELECT ANY_VALUE(g.group_id) AS value, g.group_name AS text ...
3. Désactiver only_full_group_by
(non recommandé):
Vous pouvez désactiver ce mode, mais il est généralement découragé car il masque les requêtes potentiellement problématiques:
SET sql_mode = 'only_full_group_by=OFF';
meilleures pratiques
- Noms de colonne qualifiés: Autant toujours qualifier des noms de colonne avec des alias de table (par exemple,
g.group_id
) lors de l'utilisation de plusieurs tables pour éviter l'ambiguïté. Une requête révisée peut ressembler à ceci:
SELECT g.group_id AS value, g.group_name AS text FROM mod_users_groups g LEFT JOIN mod_users_data d ON g.group_id = d.group_id ...
- UNICITÉ: Assurez-vous que
group_id
etgroup_name
sont uniques dans leurs groupes respectifs pour empêcher les résultats inattendus des valeurs en double.
En suivant ces étapes, vous pouvez résoudre efficacement les violations only_full_group_by
et écrire des requêtes MySQL plus robustes et prévisibles.
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!

MySQL'sblobissuitable ForstoringBinaryDatawithInarelationDatabase, WhileLenosqloloptionsLikEmongoDB, redis et Cassandraofferflexible, ScalablesButions forununstructureddata.blobissimplerbutcanslowdownporduit

ToaddauserRinmysql, utilisation: CreateUser'Username '@' host'identifiedBy'password '; ici'showtodoitsecurely: 1) ChoosetheHostCarelyToCon trolaccess.2) setResourcelimits withoptionslikemax_queries_per_hour.3) usestrong, uniquepasswords.4) Enforcessl / tlsconnectionwith

ToavoidcomMonmistakeswithstringDatatyPesInmysql, compréhension de compréhension, chooseTherightType, andManageEncodingAndCollationSettingSeffectively.1) usECHARFORFIXED-LEGLINGSTRING

MySQLoffersEchar, Varchar, Text, andDenumForstringData.USECHARFORFIXED-LEGLINGSTRINGS, VARCHARERFORVARVARIABLE, TEXT FORLARGER Text, andEnUmForForCingDataEgrityWithaetofValues.

L'optimisation des demandes MySqlBlob peut être effectuée via les stratégies suivantes: 1. Réduire la fréquence de la requête BLOB, utiliser les demandes indépendantes ou retarder le chargement; 2. Sélectionnez le type BLOB approprié (tel que TinyBlob); 3. Séparez les données BLOB en tables séparées; 4. Compressez les données BLOB à la couche d'application; 5. Indexez les métadonnées blob. Ces méthodes peuvent efficacement améliorer les performances en combinant la surveillance, la mise en cache et la rupture de données dans les applications réelles.

La maîtrise de la méthode d'ajout d'utilisateurs de MySQL est cruciale pour les administrateurs et les développeurs de la base de données car il garantit le contrôle de sécurité et d'accès de la base de données. 1) Créez un nouvel utilisateur à l'aide de la commande CreateUser, 2) Attribuer des autorisations via la commande Grant, 3) Utilisez FlushPrivileges pour vous assurer que les autorisations prennent effet, 4) Audit régulièrement et nettoyez les comptes d'utilisateurs pour maintenir les performances et la sécurité.

ChooseCharForfixed-LengthData, Varcharforvariable-LengthData, andTextForLargetExtFields.1) ChariseFicientForConsistent-LengthDatalikEcodes.2)

Les meilleures pratiques pour gérer les types de données de chaîne et les index dans MySQL incluent: 1) la sélection du type de chaîne approprié, tel que le char pour la longueur fixe, le varchar pour la longueur variable et le texte pour un grand texte; 2) Soyez prudent dans l'indexation, évitez de sur-indexer et créez des index pour les requêtes communes; 3) Utilisez des index de préfixe et des index de texte complet pour optimiser les recherches de chaînes longues; 4) Surveiller et optimiser régulièrement les index pour maintenir les index petits et efficaces. Grâce à ces méthodes, nous pouvons équilibrer les performances de lecture et d'écriture et d'améliorer l'efficacité de la base de données.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.
