web-dev-qa-db-fra.com

Est-il possible de GROUPER plusieurs colonnes en utilisant MySQL?

Est-il possible de GROUP BY plus d'une colonne dans une requête MySQL SELECT? Par exemple:

GROUP BY fV.tier_id AND 'f.form_template_id'
165
Rhys Thought
GROUP BY col1, col2, col3
244
Joe Phillips

Oui, vous pouvez grouper par plusieurs colonnes. Par exemple,

SELECT * FROM table
GROUP BY col1, col2

Les résultats seront d'abord regroupés par col1, puis par col2. Dans MySQL, la préférence de colonne va de gauche à droite.

85
php

Oui, mais que signifie grouper par plus de deux colonnes? Eh bien, cela revient à regrouper chaque paire unique par rangée. L'ordre dans lequel vous répertoriez les colonnes modifie le mode de tri des lignes.

Dans votre exemple, vous écririez

GROUP BY fV.tier_id, f.form_template_id

En attendant, le code

GROUP BY f.form_template_id, fV.tier_id

donnerait des résultats similaires, mais triés différemment.

17
brandonCabi
group by fV.tier_id, f.form_template_id
15
Trevor

Pour prendre un exemple simple, j'avais un compteur qui devait résumer les adresses IP uniques par page visitée sur un site. Ce qui consiste essentiellement à grouper par nom de page, puis par IP. Je l'ai résolu avec une combinaison de DISTINCT et GROUP BY.

SELECT pagename, COUNT(DISTINCT ipaddress) AS visit_count FROM log_visitors GROUP BY pagename ORDER BY visit_count DESC;
11
Daniklad
GROUP BY CONCAT(col1, '_', col2)
2
lada

Si vous préférez (je dois appliquer cela) groupe de deux colonnes en même temps, je viens de voir ce point:

SELECT CONCAT (col1, '_', col2) AS Group1 ... GROUP BY Group1
2
Lucas Andrade