我正在使用 array_agg() 函数将多行转换为一个数组,并且我需要将该数组提供给一个 select 语句 where 条件。
我的疑问是,
SELECT * FROM table WHERE id =
ALL(SELECT array_agg(id) FROM table WHERE some_condition)
但它给出了错误,我怎么能克服它..
我正在使用 array_agg() 函数将多行转换为一个数组,并且我需要将该数组提供给一个 select 语句 where 条件。
我的疑问是,
SELECT * FROM table WHERE id =
ALL(SELECT array_agg(id) FROM table WHERE some_condition)
但它给出了错误,我怎么能克服它..
错误已通过类型转换数组清除,使用我这样的查询
SELECT * FROM table WHERE id =
ALL((SELECT array_agg(id) FROM table WHERE some_condition)::bigint[])
看起来你把事情复杂化了。据我所知,您的查询应该等同于简单:
SELECT * FROM table WHERE some_condition
或者,如果您从 2 个不同的表中进行选择,请使用 join:
SELECT table1.*
FROM table1
JOIN table2 ON table1.id = table2.id
WHERE some_condition
这不仅更简单,而且比摆弄数组更快。