MySQL SELECT
クエリで複数の列をGROUP BY
することは可能ですか?例えば:
GROUP BY fV.tier_id AND 'f.form_template_id'
GROUP BY col1, col2, col3
はい、複数の列でグループ化できます。例えば、
SELECT * FROM table
GROUP BY col1, col2
結果は最初にcol1でグループ化され、次にcol2でグループ化されます。 MySQLでは、列の設定は左から右に進みます。
はい。ただし、2列以上でグループ化するとはどういう意味ですか?まあ、それは行ごとに一意のペアごとにグループ化するのと同じです。列をリストする順序により、行のソート方法が変わります。
あなたの例では、あなたは書くだろう
GROUP BY fV.tier_id, f.form_template_id
一方、コード
GROUP BY f.form_template_id, fV.tier_id
同様の結果が得られますが、ソート方法が異なります。
group by fV.tier_id, f.form_template_id
簡単な例を使用するために、サイトの訪問ページごとに一意のIPアドレスを要約する必要があるカウンターがありました。基本的にはページ名でグループ化し、次にIPでグループ化します。 DISTINCTと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)
必要に応じて(これを適用する必要があります)2列ずつグループ化する場合は、このポイントを見ました:
SELECT CONCAT (col1, '_', col2) AS Group1 ... GROUP BY Group1