我正在尝试构建一个将进入表格的查询。从jsonb列中获取一些数据,然后进一步查询该数据。
WITH id_list AS (
SELECT
data #>> '{embeds, related, content, pinned}'
FROM
content
WHERE
site_id = 5
AND
length(data #>> '{embeds, related, content, pinned}') > 0
LIMIT 1
)
SELECT
id
FROM
content
WHERE
content.id IN id_list
当我运行第一个选择时,它返回
["446001", "445989", "445980", "445962", "445965"]
哪个是正确的,为什么我不能查询数组中的值?
我还试图弄清楚是否有可能删除第一个查询的限制并将结果展平以使一个大型数组进行查询。
答案 0 :(得分:0)
使用WITH
的正确方法是将其视为表并对其进行选择,如下所示:
WITH id_list AS (
SELECT
(data #>> '{embeds, related, content, pinned}') as ids
FROM
content
WHERE
site_id = 5
AND
length(data #>> '{embeds, related, content, pinned}') > 0
LIMIT 1
)
SELECT
id
FROM
content
WHERE
content.id IN (select ids from id_list);
有关如何正确使用WITH的详细信息,请参阅https://www.postgresql.org/docs/current/static/queries-with.html。