postgres jsonb有问题

时间:2016-11-29 23:24:07

标签: postgresql postgresql-9.4

我正在尝试构建一个将进入表格的查询。从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"]

哪个是正确的,为什么我不能查询数组中的值?

我还试图弄清楚是否有可能删除第一个查询的限制并将结果展平以使一个大型数组进行查询。

1 个答案:

答案 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