web-dev-qa-db-ja.com

MySQLを使用して複数の列をGROUP BYできますか?

MySQL SELECTクエリで複数の列をGROUP BYすることは可能ですか?例えば:

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

はい、複数の列でグループ化できます。例えば、

SELECT * FROM table
GROUP BY col1, col2

結果は最初にcol1でグループ化され、次にcol2でグループ化されます。 MySQLでは、列の設定は左から右に進みます。

78
php

はい。ただし、2列以上でグループ化するとはどういう意味ですか?まあ、それは行ごとに一意のペアごとにグループ化するのと同じです。列をリストする順序により、行のソート方法が変わります。

あなたの例では、あなたは書くだろう

GROUP BY fV.tier_id, f.form_template_id

一方、コード

GROUP BY f.form_template_id, fV.tier_id

同様の結果が得られますが、ソート方法が異なります。

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

簡単な例を使用するために、サイトの訪問ページごとに一意のIPアドレスを要約する必要があるカウンターがありました。基本的にはページ名でグループ化し、次にIPでグループ化します。 DISTINCTとGROUP BYを組み合わせて解決しました。

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

必要に応じて(これを適用する必要があります)2列ずつグループ化する場合は、このポイントを見ました:

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