如何对 JSONB PostgresQL 执行足够的操作

How to perfom adequate operations on JSONB PostgresSQL

假设我有

sequelize.query('SELECT associations FROM users WHERE id = :id')

associations 是一个 JSONB ARRAY 列

输出看起来像这样

[
        {
            "role": 2,
            "shop_id": 1,
            "admin_id": 1,
            "manager_id": null
        }
    ]

我想遍历数组并使用这些 ID 搜索那些关联

我想在同一个查询中执行所有操作。

我有一个role table, shop table, users table

进度 所有列都显示为 null

如果associationjsonb[]类型的列,则使用unnest(association)来扩展第一级元素。

然后你可以尝试这样的事情,假设所有 id 都是整数类型:

sequelize.query('
 SELECT *
   FROM users
  CROSS JOIN LATERAL unnest(associations) AS j
   LEFT JOIN role AS r
     ON (j->>\'role\') :: integer = r.id
   LEFT JOIN shop AS s
     ON (j->>\'shop_id\') :: integer = s.id
   LEFT JOIN users AS a
     ON (j->>\'admin_id\') :: integer = a.id
   LEFT JOIN users AS m
     ON (j->>\'manager_id\') :: integer = m.id
  WHERE id = :id'
)