6
votes

MySQL - Quelle est la différence entre le groupe et distinct?

Dupliqué possible:
Y a-t-il une différence entre le groupe par et distinct < / p>

Quelle est la différence entre le groupe par et distinct dans une requête MySQL?


1 commentaires

J'ai marqué cela comme dupliquer, mais j'ai réalisé que cette question est spécifique à MySQL et que l'autre était pour SQL en général. MySQL a une autre différence qui n'est pas spécifiée par la norme SQL. En tant que tel, je ne pense plus que ceci est un dupliqué exact, mais je ne peux pas supprimer mon vote.


3 Réponses :


15
votes

duplicate de

y a-t-il une différence entre le groupe Par distinct

Il est déjà discuté ici

Si vous souhaitez toujours écouter ici

Le groupe de puits et distinct a son propre usage. < / p>

distinct est utilisé pour filtrer des enregistrements uniques sur les enregistrements qui répondent aux critères de requête.

Groupe par clause est utilisé pour regrouper les données sur lesquelles les fonctions globales sont tirées et la sortie est retourné en fonction des colonnes du groupe par clause. Il a ses propres limites telles que toutes les colonnes dans la requête SELECT en dehors des fonctions globales doivent faire partie du groupe par clause.

Donc, même si vous pouvez avoir les mêmes données renvoyées par Distinct et groupe par clause, il est préférable d'utiliser distinct. Voir l'exemple ci-dessous xxx

peut être écrit comme xxx

Il vous rend la vie plus facile lorsque vous avez plus de colonnes dans le Sélectionnez la liste. Mais dans le même temps, si vous devez afficher SUM (COL10) ainsi que les colonnes ci-dessus que vous devrez utiliser le groupe par. Dans ce cas, distinct ne fonctionnera pas.

par exemple xxx

espère que cela aide.


0 commentaires


9
votes

distinct ne fonctionne que sur toute la ligne. Ne soyez pas induit en erreur dans la pensée Sélectionnez Distinct (A), B fait quelque chose de différent. Ceci est équivalent à SELECT DISTINCT A, B .

D'autre part Groupe par Crée un groupe contenant toutes les lignes qui partagent chaque valeur distincte dans une seule colonne ( ou dans un certain nombre de colonnes ou d'expressions arbitraires). Utilisation de Groupe par Vous pouvez utiliser des fonctions agrégées telles que Nombre et max . Ceci n'est pas possible avec distinct .

  • Si vous voulez vous assurer que toutes les lignes de votre jeu de résultats sont uniques et que vous n'avez pas besoin d'agréger, utilisez distinct .
  • Pour quelque chose de plus avancé, vous devez utiliser groupe par .

    Une autre différence qui s'applique uniquement à MySQL est que groupe par implique également une commande par sauf si vous spécifiez contraire. Voici ce qui peut arriver si vous utilisez distincts : xxx

    résultats: xxx

    mais en utilisant Groupe par Les résultats seront entrés dans la commande triée: xxx

    résultats: xxx

    comme Un résultat de l'absence de tri utilisant distinct est plus rapide dans le cas où vous pouvez utiliser soit. Remarque: Si vous n'avez pas besoin de tri avec Group par , vous pouvez ajouter commander par null pour améliorer les performances.


0 commentaires