Eine Spalte in der Abfrage mit zahlreichen anderen Spalten aggregieren
Bei der Abfrage mit mehreren Spalten im Ergebnissatz kann das Aggregieren einer einzelnen Spalte ein Problem sein Herausforderung. Sie könnten zwar die in der referenzierten Antwort erwähnte Methode verwenden, sie könnte jedoch zu ausführlichen Abfragen führen.
Vereinfachung der Abfrage (PostgreSQL 9.1 und höher)
PostgreSQL 9.1 und höher bietet einen einfacheren Ansatz. Durch die Gruppierung nach dem Primärschlüssel einer Tabelle können Sie die angegebene Spalte aggregieren, ohne alle Spalten in die GROUP BY-Klausel einschließen zu müssen.
Wenn foo1 beispielsweise ein Primärschlüssel in Ihrer Beispielabfrage ist:
SELECT foo1, foo2, foo3, foo4, string_agg(aggregated_field, ', ') FROM tbl1 GROUP BY 1 ORDER BY foo5, foo6
Mehrere Tabellen und Beziehungen
Wenn Ihre Abfrage mehrere Tabellen mit verschiedenen Beziehungen umfasst, handelt es sich oft um mehr Es ist effizient, zuerst zu aggregieren und dann zu verknüpfen:
SELECT t1.foo1, t1.foo2, ..., t2.bar1, t2.bar2, ..., a.aggregated_col FROM tbl1 t1 LEFT JOIN tbl2 t2 ON ... ... LEFT JOIN ( SELECT some_id, string_agg(agg_col, ', ') AS aggregated_col FROM agg_tbl a ON ... GROUP BY some_id ) a ON a.some_id = ?.some_id ORDER BY ...
Durch die Trennung der Aggregations- und Verknüpfungsvorgänge wird Ihre Abfrage effizienter und einfacher zu lesen.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Spalte in einer mehrspaltigen Abfrage effizient aggregieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!