这是可能的。
任何
SELECT myindex, myname, myadress
FROM mytable
WHERE myindex = ANY ($my_array)
整数数组示例:
...
WHERE myindex = ANY ('{1,3,5,6,9}'::int[])
手册中有关的详细信息ANY
。
在
还有用于相同目的的 SQLIN()
表达式。
PostgreSQl 在其当前实现中= ANY (array)
在执行之前将其转换为内部,因此可以想象它会慢一些。
加入长列表的示例(根据评论):
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
.
加入未嵌套的数组
或者你可以unnest()
一个数组和JOIN
它:
SELECT myindex, myname, myadress
FROM mytable
JOIN (SELECT unnest('{1,3,5,6,9}'::int[]) AS myindex) x USING (myindex)
这些方法中的每一种在性能上都远远优于为每个值运行单独的查询。