【发布时间】:2022-01-11 19:49:04
【问题描述】:
我正在尝试使用从其中一个表的 json 数组中提取的 ID 加入两个表,我发现了一些关于横向连接的主题,但我无法理解,我无法在我的案例中实现它。 或者也许还有其他方法可以做到这一点?
create table jsontable (response jsonb);
insert into jsontable values ('{"SCS":[{"customerId": 100, "referenceId": 215}, {"customerId": 120, "referenceId":544}, {"customerId": 400, "referenceId": 177}]}');
create table message (msg_id integer, status integer, content text);
insert into message values
(544, 1, 'Test'), (134, 1, 'Test2'), (177, 0, 'Test3'), (215, 1, 'Test4');
SELECT m.*
FROM jsontable t
JOIN message m ON m.msg_id = (jsonb_array_elements(t.response -> 'SCS')->>'referenceId')::int
and m.status = 1
https://dbfiddle.uk/?rdbms=postgres_12&fiddle=8b3890efd34199f2356b6abca2f811c2
当然它会抛出一个错误:在 JOIN 条件中不允许设置返回函数
【问题讨论】:
-
JOIN message m ON m.msg_id IN (SELECT (jsonb_array_elements(t.response -> 'SCS')->>'referenceId')::int)
标签: json postgresql