如何从Int数组中获取最小值?min()与least()无法直接使用
从PostgreSQL数组中获取最小值的方法
方法1:PostgreSQL 14+ 直接使用 array_min() 函数
PostgreSQL 14及以上版本内置了专门处理数组的最小值函数 array_min(),可以直接传入数组参数:
select 'a', array_min(array[1,2,3]);
执行后会直接返回你期望的结果:'a', 1。
方法2:低版本PostgreSQL(14以下):展开数组后聚合
如果你的PostgreSQL版本低于14,可以用 unnest() 函数将数组拆分为单行元素,再用 min() 聚合函数取最小值:
select 'a', min(elem) from unnest(array[1,2,3]) as elem;
为什么 min() 和 least() 无法直接使用?
min()是聚合函数,作用于多行记录的同一列,而不是单个数组的内部元素;least()用于接收多个独立参数(比如least(1,2,3)),不能直接接收数组作为参数。
内容的提问来源于stack exchange,提问作者Hugh_Kelley
相关产品推荐
相关产品推荐

