


Comment éviter les conflits de noms dans les clauses SQL GROUP BY et ORDER BY ?
Conseils pour éviter les conflits de noms dans les clauses SQL GROUP BY et ORDER BY
Dans les requêtes SQL impliquant la combinaison et le tri de plusieurs colonnes, les noms de colonnes utilisés dans les clauses GROUP BY
et ORDER BY
doivent être soigneusement pris en compte car il peut y avoir des différences de nom entre les noms de colonnes de sortie et les noms de colonnes source dans le conflit du langage SQL.
Par exemple, le but d'une requête est de regrouper les données par modèle matériel (nom), type de tentative (type) et résultat binaire (résultat simplifié à 0 ou 1). Cependant, le résultat souhaité est d'afficher une seule ligne pour chaque modèle avec une combinaison unique de type et de cas.
Le problème vient de l'utilisation du nom de la colonne source GROUP BY
dans les expressions CASE
et result
. Le standard SQL indique que dans ce cas, GROUP BY
interprète result
comme nom de colonne source et ORDER BY
comme nom de colonne de sortie.
Afin de résoudre ce conflit et d'obtenir le résultat attendu, il existe plusieurs manières :
-
Utiliser l'alias de colonne : ajoutez un alias à l'expression
CASE
, en vous assurant qu'elle est différente de tout nom de colonne source. Par exemple :
... CASE WHEN attempt.result = 0 THEN 0 ELSE 1 END AS result1 ... GROUP BY model.name, attempt.type, result1 ...
- Utiliser la référence de position : utilisez un nombre pour référencer explicitement la position d'une colonne dans la liste SELECT. Par exemple :
... GROUP BY 1, 2, 3 ...
-
contient des constantes : Bien que les colonnes constantes (par exemple, jour) n'aient pas besoin d'être incluses dans
GROUP BY
, par souci de clarté, elles peuvent être ajoutées sans affecter les résultats.
Voici la requête modifiée utilisant les références de localisation :
SELECT model.name , attempt.type , CASE WHEN attempt.result = 0 THEN 0 ELSE 1 END AS result , CURRENT_DATE - 1 AS day , count(*) AS ct FROM attempt JOIN prod_hw_id USING (hard_id) JOIN model USING (model_id) WHERE ts >= '2013-11-06 00:00:00' AND ts < '2013-11-07 00:00:00' GROUP BY 1, 2, 3 ORDER BY 1, 2, 3;
En garantissant des noms de colonnes corrects et en utilisant des références de position, les requêtes agrègent désormais les données comme prévu, fournissant une seule ligne de résultats pour chaque combinaison unique de modèle, de type et de résultat.
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!

MysqlStringTypeSimpactStorageAndPerformanceSfollows: 1) Charisfixed-Length, AlwaysusingTheSameStoragespace, qui, de manière morépace-efficace sans espace.

MysqlstringTypeSincludevarchar, text, char, énum, andset.1) varcharinsversatileforvariable-LengthstringSuptoSpecifiedImmit.2)

MysqloffersvariousStringDatatypes: 1) Charforfixed-LengthStrings, 2) varcharforvariable-LengthText, 3) binaryandvarbinaryforbinarydata, 4) blobandtextforlatedata, and5) enumandsetfor.

TOGRANTERMISSIMESTESTERSWMYSQLUSERS, SuivreTheSesteps: 1) AccessMysqlasauserwithSufficientPrivileges, 2) CreateEnewUserwithThereAserercommand, 3) UsethegrantCommandTospecifyPerMissionsLikEselect, insert, mise à jour, OrallegandSonSpecificaCificdataStAtAnSorables, et4), 4).

ToaddUsersInmysqleffecativement et en résultant, suivez-vous: 1) UsethCreateAsTatement à AddanEwUser, spécifiant le dossier d'astron.

ToaddanewUserwithComplexPermisessionsInmysql, suivi destiné: 1) Création sword ';. 2) GRANTREADACCESSTOALLTABLESSIn'MYDATABASE'WithGrantsElectonMyDatabase.To'newuser' @ 'LocalHost';. 3) GRANTWRITEACESSTO '

Les types de données de chaîne dans MySQL incluent Char, Varchar, Binary, Varbinary, Blob et Text. Les collations déterminent la comparaison et le tri des chaînes. 1. Char convient aux chaînes de longueur fixe, Varchar convient aux chaînes de longueur variable. 2.Binara et varbinaire sont utilisés pour les données binaires, et Blob et le texte sont utilisés pour les données de grandes objets. 3. Les règles de tri telles que UTF8MB4_UNICODE_CI ignorent les caractéristiques supérieures et inférieures et conviennent aux noms d'utilisateurs; UTF8MB4_BIN est sensible à la casse et convient aux champs qui nécessitent une comparaison précise.

La meilleure sélection de la longueur de la colonne MySqlvarchar doit être basée sur l'analyse des données, considérer la croissance future, évaluer les impacts des performances et les exigences des ensembles de caractères. 1) Analyser les données pour déterminer les longueurs typiques; 2) Réserver l'espace d'expansion future; 3) Faites attention à l'impact de grandes longueurs sur les performances; 4) Considérez l'impact des ensembles de caractères sur le stockage. Grâce à ces étapes, l'efficacité et l'évolutivité de la base de données peuvent être optimisé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

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Version Mac de WebStorm
Outils de développement JavaScript utiles

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP
