有没有办法将json元素转置为不同的行?

时间:2019-12-07 20:55:54

标签: sql json postgresql

我不知道该怎么问,所以我将创建一个示例:

假设我有一个名为“市场”的表,该表仅包含两列和三行,如下所示:

enter image description here

所以,我想知道的是,是否有一种方法可以将所有购买的产品都放入不同的行中,例如:

enter image description here

1 个答案:

答案 0 :(得分:3)

您需要将数组取消嵌套,然后使用->>运算符提取产品名称:

select t.user_id, x.purchase ->> 'product' as product
from the_table t
  cross join jsonb_array_elements(t.purchases) as x(purchase);

如果您的列是json而不是jsonb,则需要改用json_array_elements()