mysql—sql中的查询—pivot或任何其他方式

cbeh67ev  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(255)

在查询以下场景时需要您的帮助。
表1

Name -ID1  - ID2 - ID3  
A1  - NULL - 11 - 12  
A2  -  14  - NULL -11

上表需要翻译如下
表2

Name - ID  
A1  - 11  
A1  - 12  
A2 - 14  
A2 - 11

表2是基于表1的输出。不考虑所有空值。最好的方法是什么。
有人能帮我问一下怎么做吗。谢谢

ebdffaop

ebdffaop1#

您可以使用unpivot:

SELECT name, ID 
FROM ( SELECT name, ID1, ID2, ID3 FROM table1)p
UNPIVOT
     (ID FOR ID_value IN (ID1, ID2, ID3)) AS unpvt;

这将自动消除空值,并以数据透视格式输出。

1u4esq0p

1u4esq0p2#

使用 UNION ALL :

SELECT t.*
FROM
(
    SELECT name, id1 AS id FROM table1
    UNION ALL
    SELECT name, id2 FROM table1
    UNION ALL
    SELECT name, id3 FROM table1
) t
WHERE id IS NOT NULL
ORDER BY name;

相关问题