You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中SQL Server FIRST()聚合函数的等效替代方案

编辑注:问题答案为使用MIN函数,该函数对字符串和数值类型均生效,感谢用户@cadet提供的方案。

原始问题

查阅同类问题解答近半小时仍无法理解现有回复内容,需要简单清晰、易于理解的明确解答。

在SQL Server中执行聚合查询时,可通过如下语句返回分组后field2字段的首个值:

SELECT field1, first(field2) FROM table GROUP BY field1;

需要确认该写法在PostgreSQL中的等效实现方式。此前了解到DISTINCT ON是相关适用语法,因此尝试编写如下语句:

Select field1, DISTINCT ON(field2) from table group by field1

执行时出现语法错误,不确定写法是否正确。

补充报错信息

PostgreSQL环境下直接调用FIRST函数会返回函数不存在的报错,具体信息如下:

ERROR:  function first(asset32type) does not exist
LINE 1: Select policy, first (name) from multi_asset group by policy...
                       ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
SQL state: 42883
Character: 16

需求说明

SQL Server中first()聚合函数的逻辑为:分组聚合时返回分组内field2字段的首个值。
测试数据如下:

field1field2
Tom32
Tom53

执行select field1, first(field2) group by field1语句后,返回结果为Tom, 32,即提取对应分组下field2字段的第一个值。

解答

直接使用MIN()聚合函数即可实现等效效果,该函数对字符串、数值类型字段均生效。针对上述测试场景的写法如下:

SELECT field1, MIN(field2) FROM table GROUP BY field1;

该语句执行后返回的结果与SQL Server中first()函数的预期返回结果一致。


内容的提问来源于stack exchange,提问作者Reddspark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:54:16