Postgres,如何对 JSONB 数组整数进行 LEFT JOIN

Postgres, How to do a LEFT JOIN on JSONB array integer

我有一个 table“照片”,引用了照片中显示的人物列表。 这些人在名为“persons”的 JSONB 列中被引用,其中包含一个 json,就像这种格式 [1,2,3,4,5]

CREATE TABLE Photos (
  id INTEGER PRIMARY KEY,
  name TEXT,
  persons JSONB
);

CREATE TABLE Person(
  id INTEGER PRIMARY KEY,
  name TEXT
);

我想做一个 LEFT JOIN 但我不知道怎么做。像这样

SELECT * FROM photos p LEFT JOIN person ON p.persons = person.id

知道怎么做吗?

取消嵌套数组然后你可以加入:

select ph.id, ph.name, pe.*
from photos ph
  left join jsonb_array_elements(ph.persons) as p(pid) on true
  left join person pe on pe.id = p.pid::int

第一个左联接将所有数组元素扩展为行。需要左连接,否则 persons 数组为空的照片将不会显示。然后你就可以加入对抗table.

的人了