将行中的数据分隔为多列

时间:2019-02-14 23:42:13

标签: mysql multirow

我是MySQL的相对新手。我已经尝试过选择和联接来过滤和组合来自不同表的数据。我苦苦挣扎的一件事是如何为一行输出多于一行。

这是我创建的一个示例,用于描述我要执行的操作。一个人可以有0到3个电话号码。

ID     First  Last  Bus Phone    Home Phone   Mobile Phone

40550  Ed     Zo    555-145-7424 333-743-1233 123-456-7890
46476  Rui    Jun   234-567-8901 345-678-9012   
26480 Matt    Del                             222-333-4444

我想为该人拥有的每个电话号码创建1行输出。

ID      First   Last    PhoneType           Number
40550   Ed    Zo          B             555-145-7424
40550   Ed    Zo          H             333-743-1234
40550   Ed    Zo          M             123-456-7890
46476   Rui   Jun         B             234-567-8901
46476   Rui   Jun         H             345-678-9012
26480   Matt  Del         M             222-333-4444

我应该查看哪些SQL语句?任何指针将不胜感激。

谢谢!

MG

1 个答案:

答案 0 :(得分:2)

在MySQL中,最简单的方法是union all

select id, first, last, 'B' as phoneType, bus_phone
from t
where bus_phone is not null
union all
select id, first, last, 'h', home_phone
from t
where home_phone is not null
union all
select id, first, last, 'M', mobile_phone
from t
where mobile_phone is not null;