将一行中的数据分成多列

Separating data in a row to multiple columns

我是 MySQL 的新手。我已经尝试使用选择和连接来过滤和组合来自不同表的数据。我正在努力解决的一件事是如何为一行输出多行。

这是我创建的一个示例,用于描述我正在尝试做的事情。一个人可以有 0 到 3 phone 个数字。

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

我想为这个人拥有的每个 phone 个号码创建 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 语句?任何指针将不胜感激。

谢谢!

毫克

在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;