PostgreSQL中ALL运算符(非子查询场景)的作用是什么?
PostgreSQL中非子查询场景下
all关键字的作用 在PostgreSQL的聚合函数(比如count、sum、avg等)调用里,all是显式声明默认行为的关键字,具体细节如下:
all指定聚合函数要对所有非NULL的输入值进行计算,这其实是聚合函数的默认逻辑——就算省略all,函数也会按这个规则执行。比如你示例里的count(all 97)和count(97)结果完全一致,因为输入只有一个非NULL值,两种写法没有区别。- 它的存在是为了和
distinct形成语法对称:distinct会先对输入值去重再聚合,而all则保留所有非NULL值不做去重。举个实际例子:-- 假设表t的列val包含值:1,1,2,NULL select count(all val), count(distinct val), count(val); -- 返回结果依次为:3,2,3 - 这个语法源自SQL标准,PostgreSQL完全支持,但因为是默认行为,官方文档不会单独大篇幅讲解,通常只会在聚合函数的语法定义里提一句(比如
count的语法格式为count ( [ * | [ distinct | all ] expression ] ))。
内容的提问来源于stack exchange,提问作者David542
相关产品推荐
相关产品推荐

