regroupement et tri mysql
Bien que GROUP BY et ORDER BY accomplissent souvent le même travail, ils sont très différents. Le tableau ci-dessous résume leurs différences.
La première différence répertoriée dans le tableau est extrêmement importante. Nous constatons souvent que les données regroupées par GROUP BY sont effectivement sorties dans un ordre de groupe. Mais ce n'est pas toujours le cas, et ce n'est pas requis par la spécification SQL. De plus, les utilisateurs peuvent demander que les éléments soient triés dans un ordre différent de celui regroupé. Ce n'est pas parce que vous regroupez les données d'une certaine manière (pour obtenir une valeur globale groupée spécifique) que vous devez trier la sortie de la même manière. Une clause ORDER BY explicite doit être fournie, même si son effet est le même qu'une clause GROUP BY. N'oubliez pas ORDER BY : Généralement, lorsque vous utilisez la clause GROUP BY, vous devez également donner à
une clause ORDER BY. C'est le seul moyen de garantir que les données sont correctement triées. Ne vous fiez jamaisne vous fiez jamais uniquement à GROUP BY pour trier vos données. Pour illustrer l'utilisation de GROUP BY et ORDER BY, veuillez regarder un exemple. L'instruction SELECT suivante est similaire aux exemples précédents. Il récupère le numéro de commande et le prix total de commande des commandes dont le prix total de commande est supérieur ou égal à 50 :
Entrée :
Sortie :
select order_num,sum(quantity*item_price) as ordertotal from orderitems group by order_num having sum(quantity*item_price) >= 50;
Pour trier la sortie par prix total de la commande, vous devez ajouter une clause ORDER BY, comme indiqué ci-dessous :
Entrée :Sortie :
select order_num,sum(quantity*item_price) as ordertotal from orderitems group by order_num having sum(quantity*item_price) >= 50 order by ordertotal;
Analyse : Dans cet exemple, la clause GROUP BY est utilisée pour regrouper les données par numéro de commande (colonne order_num) afin que la SUM( *) La fonction peut renvoyer le prix total de la commande. La sous-clause HAVING
filtre les données afin que seules les commandes dont le prix total de la commande est supérieur ou égal à 50 soient retournées. Enfin, utilisez la clause ORDER BY pour trier le résultat. Ordre des clauses SELECT
Revoyons l'ordre des clauses dans l'instruction SELECT. Le tableau 13-2 répertorie les clauses apprises jusqu'à présent dans l'ordre dans lequel doit être utilisé dans une instruction SELECT.
[Recommandations associées]
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!