Maison  >  Questions et réponses  >  le corps du texte

Le problème du groupe par dans Mysql. .

Dans Mysql, la méthode d'écriture suivante est autorisée. Mais est-ce strict ou non ? Est-ce que cela prend en charge une écriture comme celle-ci ? Si vous avez des doutes sur la façon de résoudre ce problème, aidez-moi.

select * from user group by user_name;
某草草某草草2712 Il y a quelques jours701

répondre à tous(9)je répondrai

  • 怪我咯

    怪我咯2017-05-18 10:54:23

    最详细的文档说明在官网找到了。

    MySQL 5.7.5 et versions ultérieures implémente la détection de la dépendance fonctionnelle. Si le mode SQL ONLY_FULL_GROUP_BY est activé (ce qui est le cas par défaut), MySQL rejette les requêtes pour lesquelles la liste de sélection, la condition HAVING ou la liste ORDER BY font référence à des colonnes non agrégées qui ne sont ni nommées dans la clause GROUP BY ni fonctionnellement dépendantes d'elles. . (Avant la version 5.7.5, MySQL ne détecte pas les dépendances fonctionnelles et ONLY_FULL_GROUP_BY n'est pas activé par défaut. Pour une description du comportement antérieur à la version 5.7.5, consultez le manuel de référence MySQL 5.6.)

    来源:https://dev.mysql.com/doc/ref...

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-18 10:54:23

    Les champs de sélection doivent être forcés à être écrits en groupe par
    sélectionnez le nom d'utilisateur du groupe d'utilisateurs par nom d'utilisateur ;

    http://blog.csdn.net/u2830560...

    répondre
    0
  • 怪我咯

    怪我咯2017-05-18 10:54:23

    Tout d'abord, comprenez le concept de regroupement et quels types d'effets peuvent être obtenus après le regroupement ;
    Le regroupement est destiné à une analyse statistique basée sur l'attribut du groupe ;
    Par exemple, dans un tableau d'élèves, regroupé par sexe, vous pouvez compter ; combien de garçons et combien de filles.
    La colonne de résultat de la requête doit être composée de fonctions d'agrégation telles que somme et nombre. Par exemple :
    sélectionnez le nombre (*), le sexe du groupe d'étudiants par sexe ;
    S'il s'agit de sélectionner * du groupe d'utilisateurs par nom_utilisateur ; quel type de résultat statistique souhaitez-vous obtenir ?
    mysql5.6 peut utiliser cette méthode d'écriture select * from user group by user_name par défaut, mais l'instruction est en fait convertie en interne ;
    mysql5.7 et versions ultérieures ne peuvent pas utiliser cette méthode d'écriture par défaut, et une erreur sera signalée.
    Donc avant d'écrire, réfléchissez à ce dont j'ai besoin pour compter grâce au regroupement et utilisez les fonctions d'agrégation appropriées

    répondre
    0
  • 天蓬老师

    天蓬老师2017-05-18 10:54:23

    Trois points à noter lors de l'utilisation de GROUP BY dans les instructions SQL
    1 : Les alias ne peuvent pas être utilisés ;
    2 : Sauf pour les champs de fonction, les champs apparaissant dans select doivent apparaître dans group by,
    3 : Les alias ne peuvent pas utiliser de mots réservés
    Ces trois Il n'y a aucune exigence pour cliquer sur MYSQL !
    Regardons à nouveau votre déclaration. Si la table utilisateur n'a qu'un seul champ nom_utilisateur, alors cette déclaration n'a aucun problème.
    Si la table utilisateur a plus d'un champ, alors cette déclaration n'a aucun problème dans MySQL, mais il y a un problème. dans Oracle et SQLServer

    répondre
    0
  • 怪我咯

    怪我咯2017-05-18 10:54:23

    select * from user group by user_name;
    //这么写其实也没问题 但是 实际上 你使用 group by 的时候 你需要用的 就只有 user_name 这个字段吧(通常来说)
    //用什么字段就取什么字段就好。不一定要用 ‘*’ 用谁取谁就好

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-18 10:54:23

    Si le champ user_name existe, alors il n'y a pas de problème. Grouper par regroupe par champs. Il est généralement utilisé avec des fonctions d'agrégation SQL comme la vôtre peuvent également être exécutées. Cependant, user_name est généralement unique et cela n'a aucun sens de regrouper par champs uniques.

    répondre
    0
  • 黄舟

    黄舟2017-05-18 10:54:23

    Il s'agit d'une prise en charge de fonction spéciale pour MySQL. Comme l'a dit @xuexiphpa, elle peut être désactivée via les paramètres.

    Mais il n'est pas recommandé de l'utiliser. Après le regroupement, le nombre d'enregistrements renvoyés est théoriquement inférieur à celui avant le regroupement. Généralement, certaines données statistiques seront renvoyées via des fonctions d'agrégation.
    Utilisez select * directement sans confirmer quel enregistrement est renvoyé.

    répondre
    0
  • 滿天的星座

    滿天的星座2017-05-18 10:54:23

    Généralement, une combinaison de fonctions d'agrégation est plus couramment utilisée

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-18 10:54:23

    group by Après le regroupement par agrégation, il est préférable de conserver les éléments dans la clause select uniquement :
    1, constante
    2, nom de colonne spécifié par group by
    3, fonction d'agrégation , comme count(), avg(), sum(*), etc.

    Votre* résultat ne répertorie qu'un seul enregistrement pour chaque groupe, et vous ne savez pas s'il s'agit du premier ou d'une valeur aléatoire

    répondre
    0
  • Annulerrépondre