create table foo_table(foo_id int, foo_array int[], some_other_column text)
insert into foo_table(foo_array) values (ARRAY[1,3,8,32,55])
insert into foo_table(foo_array) values (ARRAY[2,4,9,31,38,92,99])
insert into foo_table(foo_array) values (ARRAY[5,12,15,35,47])
insert into foo_table(foo_array) values (ARRAY[6,7,13])
foo_array数组将具有可变数量的元素。 所有数组元素都是唯一的,所有数组中的所有数字也都是唯一的。
我想知道如何从foo_array列中选择最大的5个数字,在这种情况下将是99,92,55,47,38。
答案 0 :(得分:1)
select t.nr
from foo_table
cross join lateral unnest(foo_array) as t(nr)
order by nr desc
limit 5
或者更短:
select unnest(foo_array) nr
from foo_table
order by nr desc
limit 5
在选择列表中使用set-returns函数有点不赞成 - 或者至少不鼓励使用。