3

我正在使用 array_agg() 函数将多行转换为一个数组,并且我需要将该数组提供给一个 select 语句 where 条件。

我的疑问是,

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

但它给出了错误,我怎么能克服它..

4

2 回答 2

3

错误已通过类型转换数组清除,使用我这样的查询

 SELECT * FROM table WHERE id = 
    ALL((SELECT array_agg(id) FROM table WHERE some_condition)::bigint[])

参考链接

于 2013-04-05T07:21:04.250 回答
1

看起来你把事情复杂化了。据我所知,您的查询应该等同于简单:

SELECT * FROM table WHERE some_condition

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

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

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

于 2013-04-05T06:30:42.427 回答