【问题标题】:Using SELECT sub-query inside jsonb_array_elements_text function in Postgres在 Postgres 的 jsonb_array_elements_text 函数中使用 SELECT 子查询
【发布时间】:2020-11-06 18:29:08
【问题描述】:

我有以下问题

SELECT DISTINCT ON (user_id) user_id, timestamp
FROM entries 
WHERE user_id in (1,2)
AND entry_type IN(
  SELECT jsonb_array_elements_text(
    SELECT entry_types 
    FROM users INNER JOIN orgs
    ON org_id = orgs.id 
    WHERE users.id = 1
  )
);

我在 select 处或附近遇到语法错误

“select”第 1 行或附近的语法错误:... entry_type in(select jsonb_array_elements_text(s选择。

entry_types 字段是 JSONB 字段,因此我尝试将其转换为文本以便在 WHERE IN 子句中使用它。

PostgreSQL 13.0

jsonb_array_elements_text 中的这个子查询

SELECT entry_types 
    FROM users INNER JOIN orgs
    ON org_id = orgs.id 
    WHERE users.id = 1

像这样返回单个 JSONB 条目:

                entry_types                     
--------------------------------------------  
["type1", "type2", "type3"]

我只是想将那里返回的文本值数组用作 WHERE IN 子句中的条件。

【问题讨论】:

  • 请提供样本数据、期望的结果以及对查询目的的解释。不明显。
  • @GMB 我添加了一些细节,让我知道这是否足够。

标签: postgresql subquery psql jsonb


【解决方案1】:

语法错误似乎指向其他地方,所以也许我错了,但我看到的问题是子查询周围缺少一对括号:

jsonb_array_elements_text((SELECT ...))

【讨论】:

    猜你喜欢
    • 2021-06-19
    • 2023-03-09
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2016-04-04
    • 1970-01-01
    相关资源
    最近更新 更多