这是可能的。
ANY
SELECT myindex, myname, myadress
FROM mytable
WHERE myindex = ANY ($my_array)
整数数组示例:
...
WHERE myindex = ANY ('{1,3,5,6,9}'::int[])
详细信息ANY在手册中。
IN
还有SQLIN()表达出于同样的目的。
PostgreSQl 在其当前实现中将其转换为= ANY (array)
在执行之前在内部执行,因此可以想象它会慢一些。
加入的示例long列表(根据评论):
JOIN 到 VALUES 表达式
WITH x(myindex) AS (
VALUES
(1),(3),(5),(6),(9)
)
SELECT myindex, myname, myadress
FROM mytable
JOIN x USING (myindex)
我正在使用一个CTE在示例中(这是可选的,也可以是子查询)。为此,您需要 PostgreSQL 8.4 或更高版本。
该手册关于VALUES.
JOIN 到非嵌套数组
或者你可以unnest()一个数组和JOIN
to it:
SELECT myindex, myname, myadress
FROM mytable
JOIN (SELECT unnest('{1,3,5,6,9}'::int[]) AS myindex) x USING (myindex)
这些方法中的每一个都是远远优于性能优于每个值运行单独的查询。