Ist es möglich, zu GROUP BY
mehr als eine Spalte in einer MySQL SELECT
Abfrage? Zum Beispiel:
GROUP BY fV.tier_id AND 'f.form_template_id'
GROUP BY col1, col2, col3
Ja, Sie können nach mehreren Spalten gruppieren. Zum Beispiel,
SELECT * FROM table
GROUP BY col1, col2
Die Ergebnisse werden zuerst nach Spalte 1 und dann nach Spalte 2 gruppiert. In MySQL gehen die Spalteneinstellungen von links nach rechts.
Ja, aber was bedeutet das Gruppieren nach mehr als zwei Spalten? Nun, es ist dasselbe wie das Gruppieren nach jedem einzelnen Paar pro Zeile. Die Reihenfolge, in der Sie die Spalten auflisten, ändert die Sortierung der Zeilen.
In Ihrem Beispiel würden Sie schreiben
GROUP BY fV.tier_id, f.form_template_id
Inzwischen ist der Code
GROUP BY f.form_template_id, fV.tier_id
würde ähnliche Ergebnisse geben, aber unterschiedlich sortiert.
group by fV.tier_id, f.form_template_id
Um ein einfaches Beispiel zu verwenden, hatte ich einen Zähler, der die eindeutigen IP-Adressen pro aufgerufene Seite auf einer Site zusammenfassen musste. Das ist im Grunde Gruppierung nach Seitenname und dann nach IP. Ich habe es mit einer Kombination aus DISTINCT und GROUP BY gelöst.
SELECT pagename, COUNT(DISTINCT ipaddress) AS visit_count FROM log_visitors GROUP BY pagename ORDER BY visit_count DESC;
GROUP BY CONCAT(col1, '_', col2)
Wenn Sie es vorziehen (ich muss diese anwenden), zwei Spalten gleichzeitig zu gruppieren, habe ich gerade diesen Punkt gesehen:
SELECT CONCAT (col1, '_', col2) AS Group1 ... GROUP BY Group1