我有下表:
Name Type Value
---------------------
mike phone 123
mike address nyc
bob address nj
bob phone 333
我希望得到如下结果:
name value value
-------------------
mike nyc 123
bob nj 333
我该怎么做?
答案 0 :(得分:17)
它被称为自我加入。诀窍是使用别名。
select
address.name,
address.value as address,
phone.value as phone
from
yourtable as address left join
yourtable as phone on address.name = phone.name
where address.type = 'address' and
(phone.type is null or phone.type = 'phone')
查询假设每个名称都有一个地址,但电话号码是可选的。
答案 1 :(得分:0)
这样的事情:
SELECT a.name AS name, phone, address
FROM (SELECT name, value AS phone FROM mytable WHERE type = "phone") AS a
JOIN (SELECT name, value AS address FROM mytable WHERE type = "address") AS b
ON(a.name = b.name);