webentwicklung-frage-antwort-db.com.de

Ist es möglich, mit MySQL mehrere Spalten zu gruppieren?

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'
165
Rhys Thought
GROUP BY col1, col2, col3
244
Joe Phillips

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.

85
php

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.

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

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;
11
Daniklad
GROUP BY CONCAT(col1, '_', col2)
2
lada

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
2
Lucas Andrade