MySQL 中的逆透视表 [英] Unpivot table in MySQL

查看:135
本文介绍了MySQL 中的逆透视表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一张像下面这样的表格

I have a table like below

CREATE TABLE unpivot_table (
    FirstName varchar(100) NOT NULL, 
    LastName varchar(100) NOT NULL,
    query1 varchar(200) NOT NULL,
    result1 varchar(200) NOT NULL,
    query2 varchar(200) NOT NULL,
    result2 varchar(200) NOT NULL,
    query3 varchar(200) NOT NULL,
    result3 varchar(200) NOT NULL,
    query4 varchar(200) NOT NULL,
    result4 varchar(200) NOT NULL,
    query5 varchar(200) NOT NULL,
    result5 varchar(200) NOT NULL
    )

我正在尝试将上表反转为下表所示

I am trying to unpivot the above table to look like the below table

CREATE TABLE UnPivoted (
        FirstName varchar(100) NOT NULL, 
        LastName varchar(100) NOT NULL,
        query varchar(200) NOT NULL,
        result varchar(200) NOT NULL
        )   

在 MSSQL 中,我可以使用以下查询来实现这一点

In MSSQL I can achieve this by using the below query

SELECT unpivot_table.FirstName, unpivot_table.LastName, 
        CrossApplied.query, CrossApplied.result
FROM unpivot_table
CROSS APPLY (VALUES (query1, result1),
                    (query2, result2),
                    (query3, result3),
                    (query4, result4),
                    (query5, result5)) 
            CrossApplied (query, result);

但我在 MySQL 中需要这个,而在此查询中使用的交叉应用"不在 MySQL 中.

But i need this in MySQL and 'cross apply' which is used in this query is not in MySQL.

根据我的研究,我发现从 MySQL 8.0.14 开始,mysql 引入了lateral",它可以用作cross apply"的替代方法,但我未能编写查询.

From my research I found 'lateral' is introduced by mysql as of MySQL 8.0.14 which can use as an alternative to 'cross apply' but i failed to write the query.

请帮助在 MySQL 中实现这一点.

Please help to achieve this in MySQL.

提前致谢.

推荐答案

可以使用union all

select FirstName, LastName,query1, result1 from unpivot_table
union all
select FirstName, LastName,query2, result2 from unpivot_table
union all
select FirstName, LastName,query3, result3 from unpivot_table
union all
select FirstName, LastName,query4, result4 from unpivot_table

这篇关于MySQL 中的逆透视表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆