首页 >数据库 >mysql教程 >如何在多列查询中高效聚合列?

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

DDD
DDD原创
2024-12-27 21:32:27776浏览

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