【问题标题】:Postgresql Select from values in arrayPostgresql 从数组中的值中选择
【发布时间】:2013-04-05 06:21:05
【问题描述】:

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

我的查询是,

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

但它给出了错误,我该如何克服它..

【问题讨论】:

  • 您遇到的错误是什么??
  • 错误:运算符不存在:bigint = bigint[] 提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。

标签: arrays postgresql postgresql-9.1


【解决方案1】:

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

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

reference link

【讨论】:

    【解决方案2】:

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

    SELECT * FROM table WHERE some_condition
    

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

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

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

    【讨论】:

    • 我需要统计记录,
    • 您的问题中没有提到这一点。 SELECT count(*) ... 怎么了?
    猜你喜欢
    • 2021-12-18
    • 2020-08-30
    • 2020-08-17
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多