DeepSeek总结的PostgreSQL 19 即将引入的新功能GROUP BY ALL

原文地址

PostgreSQL 19 即将引入的新功能:GROUP BY ALL。以下是内容总结:


一、功能背景

  • 提交时间:2025年9月29日,由 Tom Lane 提交。
  • 功能说明GROUP BY ALL 是一种简化写法,自动将所有未包含聚合函数或窗口函数 的查询列添加到 GROUP BY 子句中。
  • 标准化:该语法已被 SQL 标准委员会接受,并已在其他数据库系统中存在。

二、使用示例

1. 基本用法:
sql 复制代码
-- 使用 GROUP BY ALL
SELECT relnamespace, relkind, COUNT(*) 
FROM pg_class 
GROUP BY ALL;

-- 等同于传统写法
SELECT relnamespace, relkind, COUNT(*) 
FROM pg_class 
GROUP BY relnamespace, relkind;

输出示例

复制代码
 relnamespace │ relkind │ count
──────────────┼─────────┼───────
           99 │ t       │    48
        13331 │ v       │    65
          ... │ ...     │   ...
2. 复杂查询示例(含连接和聚合):
sql 复制代码
SELECT
    n.nspname,
    c.relkind,
    COUNT(*) FILTER (WHERE c.relname ~ 'a'),
    ARRAY_AGG(DISTINCT relowner::regrole::text)
FROM
    pg_class c
    JOIN pg_namespace n ON c.relnamespace = n.oid
GROUP BY ALL
ORDER BY n.nspname, c.relkind;

输出示例

复制代码
      nspname       | relkind | count |   array_agg
--------------------+---------+-------+----------------
 information_schema | r       |     3 | {pgdba}
 pg_catalog         | i       |    98 | {pgdba}
 ...                | ...     |   ... | ...

三、功能特点

  1. 自动推断分组列 :自动将 SELECT 中所有非聚合、非窗口函数的列添加到 GROUP BY 列表。
  2. 排除聚合与窗口函数 :如 COUNT()ARRAY_AGG() 等不会被加入分组条件。
  3. 兼容复杂表达式:支持连接查询、条件过滤等复杂场景。
  4. 简化语法:减少重复编写列名,适用于快速数据探索。

四、总结

GROUP BY ALL 是 PostgreSQL 19 中一个实用的语法扩展,尤其适合快速数据探查和简化查询编写。虽然传统显式写法更明确,但新语法在保持逻辑清晰的同时减少了代码冗余,体现了 PostgreSQL 对现代 SQL 标准的持续跟进。

如果需要进一步了解该功能的具体限制或与其他数据库的兼容性,可参考原文中的讨论链接。

相关推荐
Navicat中国11 小时前
使用 SSL/TLS 安全连接数据库
数据库·安全·ssl
heimeiyingwang11 小时前
【架构实战】MySQL主从复制与读写分离:数据库高可用架构
数据库·mysql·架构
Cosolar11 小时前
2026年全球向量数据库技术全景与架构演进深度解析报告
数据库·人工智能·架构·agent·智能体
IronMurphy11 小时前
Redis拷打第七讲(最终章)
数据库·redis·php
张~颜11 小时前
PostgreSQL复制槽
数据库·postgresql
爱晒太阳的小老鼠11 小时前
数据库连接池Connection is not available, request timed out after 120000ms
数据库
2301_8039346112 小时前
SQL如何进行分组后字符串拼接_使用GROUP_CONCAT或STRING_AGG
jvm·数据库·python
爱喝水的鱼丶12 小时前
SAP-ABAP:数据类型与数据对象(8篇) 第四篇:关系映射篇——从类型定义到对象实例的转化逻辑
开发语言·数据库·学习·sap·abap
csdn小瓯12 小时前
Pydantic V2 模型校验与配置管理最佳实践
运维·数据库·windows
网管NO.112 小时前
MySQL、Oracle、PostgreSQL 深度对比,数据库怎么选?
数据库·mysql·oracle