我有一个数组ARRAY [10,20,30,40,50,60]和另一个具有索引ARRAY [1,2,3]的数组 我想创建一个SQL查询以获取带有索引数组的值。 例如:
SELECT * FROM ARRAY[10,20,30,40,50,60] WHERE <index> = ANY(ARRAY[1,2,3]);
此查询的输出为:
[20, 30, 40];
答案 0 :(得分:2)
在Postgres中,数组元素索引从1开始,而不是0。
您可以使用UNNEST
对主数组进行ORDINALITY
,然后在where
子句中使用它。
select array_agg(elem order by idx) from
unnest (ARRAY[10,20,30,40,50,60])
with ordinality as a(elem,idx)
where idx = ANY(ARRAY[1,2,3]);
这产生{10,20,30}