【问题标题】:postgres jsonb with issuespostgres jsonb 有问题
【发布时间】:2016-11-30 07:52:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: postgresql postgresql-9.4


    【解决方案1】:

    使用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);
    

    请参阅https://www.postgresql.org/docs/current/static/queries-with.html 以获取有关如何正确使用 WITH 的进一步参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-24
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 2021-11-03
      相关资源
      最近更新 更多