首頁 > 資料庫 > mysql教程 > 如何在多列查詢中高效聚合列?

如何在多列查詢中高效聚合列?

DDD
發布: 2024-12-27 21:32:27
原創
830 人瀏覽過

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

將查詢中的一列與許多其他欄位聚合

當查詢結果集中的多個欄位時,聚合單一欄位可以是挑戰。雖然您可以使用引用答案中提到的方法,但它可能會導致冗長的查詢。

簡化查詢(PostgreSQL 9.1 及更高版本)

PostgreSQL 9.1 及更高版本提供了更簡單的方法。按表的主鍵分組,您可以聚合指定列,而不必在 GROUP BY 子句中包含所有列。

例如,如果 foo1 是範例查詢中的主鍵:

SELECT foo1, foo2, foo3, foo4, string_agg(aggregated_field, ', ')
FROM tbl1
GROUP BY 1
ORDER BY foo5, foo6
登入後複製

多個表和關係

當您的查詢涉及具有不同類型的多個表時對於關係,先聚合然後連接通常會更有效:

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 ...
登入後複製

透過分離聚合和連接操作,您的查詢將變得更有效率且更易於閱讀。

以上是如何在多列查詢中高效聚合列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板