postgresql - 在 Postgres 的 jsonb_array_elements_text 函数中使用 SELECT 子查询
问题描述
我有以下查询
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
)
);
我在选择处或附近遇到语法错误
“选择”第 1 行或附近的语法错误: ... entry_type in( select jsonb_array_elements_text( slect ent .
字段 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 子句中的条件。
解决方案
语法错误似乎指向其他地方,所以也许我错了,但我看到的问题是子查询周围缺少一对括号:
jsonb_array_elements_text((SELECT ...))
推荐阅读
- javascript - startAction() 函数中的错误是什么?
- python - 在python中将列表分成两半而不重复的每种方法
- gitlab - 不确定如何将 rstudio 与 gitlab 连接?
- javascript - 从 Jquery UI Datepicker 中的 dtes 范围获取差异
- java - 服务器 tomcat 9.0 启动失败
- bash - 在“then”附近抨击意外令牌
- sql - 从 Django 中的多个数据库表返回结果
- php - 我这里的代码太多了,想缩短这个
- javascript - 如何获取 JavaScript 对象的键的字符串值?
- ruby - 如何关联不同类型的角色(代理和客户)