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'
GROUP BY col1, col2, col3
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.
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.
group by fV.tier_id, f.form_template_id
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;
GROUP BY CONCAT(col1, '_', col2)
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