在Postgresql中查询结果由int []在查询中使用

时间:2014-08-15 17:01:28

标签: postgresql postgresql-9.2 psql

我想使用类似的查询来查询表:

SELECT * FROM table WHERE id=ANY(ARRAY[454, 345, 987, 247]) ORDER BY ?;

有没有办法取代?在ORDER BY中是否会按照ARRAY [454,345,987,247]中整数的索引顺序对行进行排序?

1 个答案:

答案 0 :(得分:3)

CREATE EXTENSION intarray;

SELECT * 
FROM table 
WHERE id=ANY(ARRAY[454, 345, 987, 247])
ORDER BY idx(ARRAY[454, 345, 987, 247], id);

仅适用于整数数组。对于其他人,你必须自己编写idx(并且不会很快)。

请参阅intarray

我认为在9.4中可以使用UNNEST(...) WITH ORDINALITY更快地完成。