从带有索引的数组中选择数据

时间:2019-07-17 03:07:58

标签: postgresql

我有一个数组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];

1 个答案:

答案 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}

DEMO