考虑到我有一个 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]')
分贝小提琴:https://www.db-fiddle.com/f/2qnnkmbqxf2fb9xjdj55sz/0
谢谢!
2条答案
按热度按时间q5lcpyga1#
从声明的Angular 来看,这不是一种优雅的方法,但是您能看看这是否对您更有利吗?
laximzn52#
此查询
如果您只需要像演示中那样取消填充查询中的所有元素,那么应该运行得更快。
演示
或者甚至把柱子从
products
表格:或者你需要像这样回来
取消激活两列,然后使用:
演示