我是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
答案 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;