【发布时间】:2020-09-23 16:40:00
【问题描述】:
这是我的虚拟设置:
CREATE TABLE containers (
id SERIAL PRIMARY KEY,
positions jsonb
);
CREATE TABLE bits (
id SERIAL PRIMARY KEY,
container_id integer REFERENCES containers(id) ON DELETE CASCADE ON UPDATE CASCADE,
data jsonb
);
containers 中的示例行:
id positions
1 [4, 2, 3]
我想要完成的是使用containers 中的positions 来指示返回位的顺序。这似乎比在bits 中使用具有0、1、2、3 等值的smallint position 列更容易,并且必须在用户重新排序位时全部更新。
本质上,我想做的是在ORDER BY 中使用positions 数组,例如(伪代码):
SELECT b.id, b.data FROM bits b, container c WHERE b.container_id = 1 ORDER BY (jsonb_array_elements(c.positions));
期望的输出是:
id data
4 {"banner": "This is a message!"}
2 {"name": "Bob"}
3 {"playlistId": 3}
我该如何做到这一点?我正在使用 Postgres 10.7。
【问题讨论】:
标签: arrays json postgresql sql-order-by postgresql-10