Postgresql从数组中的值中选择

时间:2013-04-05 06:21:06

标签: arrays postgresql postgresql-9.1

我正在使用array_agg()函数将多行转换为数组, 我需要将该数组赋予条件的选择语句。

我的查询是,

SELECT * FROM table WHERE id = 
  ALL(SELECT array_agg(id) FROM table WHERE some_condition)

但它给出了错误,我怎么能过来......

2 个答案:

答案 0 :(得分:3)

使用我的查询

,通过类型转换数组来清除错误
 SELECT * FROM table WHERE id = 
    ALL((SELECT array_agg(id) FROM table WHERE some_condition)::bigint[])

reference link

答案 1 :(得分:1)

好像你过分复杂了。据我所知,您的查询应该等同于简单:

SELECT * FROM table WHERE some_condition

或者,如果您从2个不同的表中进行选择,请使用join:

SELECT table1.*
FROM table1
JOIN table2 ON table1.id = table2.id
WHERE some_condition

这不仅更简单,而且比摆弄数组更快。