如何在 PostgreSQL 中将 jsonb 字段解析为没有键的列

How to parse jsonb field into columns without keys in PostgreSQL

我有 table login( id int, meta_skills jsonb),但是 jsonb 没有存储在键值对中。

jsonb字段中的数据看起来像

{
  "Cat1": [
    {
      "Skill_1": 2,
      "Skill_2": 2,
      "Skill_3": 2,
      "Skill_4": 2,
      "Skill_5": 2
    }
  ],
  "Cat2": [
    {
      "Skill_1": 3,
      "Skill_2": 2,
      "Skill_3": 3
    }
  ],
  "Cat3": [
    {
      "Skill_1": 2,
      "Skill_2": 2,
      "Skill_3": 2,
      "Skill_4": 2
    }
  ]
}

技能值是随机值。 我想按以下格式准备数据

您必须取消嵌套关卡:

SELECT login.id,
       u1.category,
       u3.skill,
       u3.level
FROM login
   CROSS JOIN LATERAL jsonb_each(login.meta_skills) AS u1(category,v)
   CROSS JOIN LATERAL jsonb_array_elements(u1.v) AS u2(v)
   CROSS JOIN LATERAL jsonb_each(u2.v) AS u3(skill, level);