我想使用类似的查询来查询表:
SELECT * FROM table WHERE id=ANY(ARRAY[454, 345, 987, 247]) ORDER BY ?;
有没有办法取代?在ORDER BY中是否会按照ARRAY [454,345,987,247]中整数的索引顺序对行进行排序?
答案 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
更快地完成。