如何在 mysql 中取消透视数据

Posted

技术标签:

【中文标题】如何在 mysql 中取消透视数据【英文标题】:How to Unpivot Data in mysql 【发布时间】:2020-07-24 13:44:15 【问题描述】:

帮助伙计们, 我有桌子

餐桌产品:

| id | product | quantity |
| 1  | tea     | 2        |
| 2  | juice   | 3        |

我要选择全部使用成为:

| id | product |
| 1  | tea     |
| 1  | tea     |
| 2  | juice   |
| 2  | juice   |
| 2  | juice   |

如何查询?谢谢你

【问题讨论】:

考虑处理应用代码中数据显示的问题 【参考方案1】:

一个选项使用递归查询,在 mysql 8.0 中可用:

with recursive cte as (
    select id, product, quantity from mytable
    union all
    select id, product, quantity - 1 from cte where quantity > 1
)
select id, product from cte

【讨论】:

你的意思是我需要另一张桌子吗? cmiiw @TondoKtbffh:不,只需将 mytable 替换为您的表的实际名称即可。【参考方案2】:

您好,希望对您有所帮助。

SELECT a.id , a.product , a.quantity 
FROM Product a 
cross join 
(select * from seq_1_to_10000) b 
where a.quantity >= b.seq

如果觉得有用,请点赞。

【讨论】:

以上是关于如何在 mysql 中取消透视数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle 11 中取消透视单行?

在 MySQL 中取消透视多个列

如何在 pandas 中为 2 级参数取消透视

如何根据条件行值对 pandas 数据框进行取消堆叠或取消透视?

如何取消透视多列数据?

如何取消透视表之类的交叉表?