Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine Spalte in einer mehrspaltigen Abfrage effizient aggregieren?

Wie kann ich eine Spalte in einer mehrspaltigen Abfrage effizient aggregieren?

DDD
Freigeben: 2024-12-27 21:32:27
Original
809 Leute haben es durchsucht

How Can I Efficiently Aggregate a Column in a Multi-Column Query?

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
Nach dem Login kopieren

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 ...
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage