【发布时间】:2020-06-25 05:04:06
【问题描述】:
鉴于我有一个带有一对值数组的 jsonb 列:
[1001, 1, 1002, 2, 1003, 3]
我想把每一对变成一行,每对值作为列:
| a | b |
|------|---|
| 1001 | 1 |
| 1002 | 2 |
| 1003 | 3 |
这样的事情是否可能以一种有效的方式实现?
我发现了一些低效(缓慢)的方法,例如使用 LEAD(),或者使用下一行的值连接同一个表,但查询大约需要 10 分钟。
DDL:
CREATE TABLE products (
id int not null,
data jsonb not null
);
INSERT INTO products VALUES (1, '[1001, 1, 10002, 2, 1003, 3]')
DB 小提琴:https://www.db-fiddle.com/f/2QnNKmBqxF2FB9XJdJ55SZ/0
谢谢!
【问题讨论】:
-
但是给定的示例值没有配对
-
@AkhileshMishra 你这是什么意思?从业务需求的角度来看,它们是“软”配对的。它们在软件工程意义上不是配对的。例如。它不是二维数组。
标签: sql postgresql jsonb