【问题标题】:Join tables using a value inside a JSONB column postgresql使用 JSONB 列 postgresql 中的值连接表
【发布时间】:2021-12-16 17:53:21
【问题描述】:

我在 postgresql 中有两个表。

  1. 第一个(产品)有 sku json 行 ([149461190])
  2. 第二个(项目)有一个普通的 sku 列

我如何在 sku 上加入他们? 我试过这个,但它没有用。 无法识别 joinSourcePart 中 'jsonb_to_recordset' '(' 'ps' 中的输入

  select * from product ps
, jsonb_to_recordset(ps.sku -> 'ps_sku') as (sku text)
join item v using sku
       

【问题讨论】:

  • 请附加您的 JSON 结构和字段,以及您想加入item 表的哪一列?
  • 第一个表中的 json 列看起来像此列名称 sku [149408204]、[149461190]、[149422714]
  • 第二个表也有 sku 列,它包含天空但不在 json 中:149461190, 149422714
  • 我想在 item.sku 上加入 json 的 product.sku
  • 您应该更改数据模型,而不是为此目的使用 JSON 或数组。

标签: json postgresql join select


【解决方案1】:

希望这个查询对你有帮助,你可以在dbfiddle查看数据结构和示例数据

select 
  *
from  
  product p
  cross join jsonb_array_elements_text(p.sku -> 'ps_sku') as j(sku)
  inner join item i on i.sku = j.sku :: numeric

【讨论】:

  • 谢谢,但又是一个错误->> org.apache.hadoop.hive.ql.parse.ParseException:line 5:39 cannot identify input near 'jsonb_array_elements_text' '(' 'p' in joinSourcePart
猜你喜欢
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 2016-07-14
  • 1970-01-01
  • 2021-12-31
相关资源
最近更新 更多