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

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

Barbara Streisand
Barbara Streisand原創
2024-12-20 07:46:10975瀏覽

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

聚合多列查詢中的單列

概述

將查詢中的單一欄位與許多其他欄位聚合可能是一個挑戰,尤其是當所有SELECT 和ORDER BY 欄位必須聚合或屬於GROUP BY 時。這種冗長的查詢結構管理起來很麻煩。

PostgreSQL 9.1 的簡化查詢

在 PostgreSQL 9.1 或更高版本中,有更簡單的解決方案。當使用主鍵作為GROUP BY 條件時,可以簡化查詢:

SELECT foo1, foo2, foo3, foo4, foo5, foo6, string_agg(aggregated_field, ', ')
FROM tbl1
GROUP BY 1  -- Group by primary key (foo1)
ORDER BY foo7, foo8;

多表查詢

對於涉及不同關係的多個表的查詢,先聚合資料會更有效率稍後再連接表:

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