我有三个这样的表:
人
id | name | location
-----------------------
1 | ABC | Location1
2 | XYZ | Location2
联系
id | type | contact
---------------------------
1 | website | abc.com
2 | email | abc@abc.com
3 | website | xyz.com
4 | email | xyz@xyz.com
联络人
Person_id | Contact_id
-----------------------
1 | 1
1 | 2
2 | 3
2 | 4
我想得到这样的结果:
id | name | website | email
----------------------------------
1 | ABC | abc.com | abc@abc.com
2 | XYZ | xyz.com | xyz@xyz.com
解决方法:
有几种方法可以做到这一点,但是对于MySQL来说这是一个简单的方法
SELECT
p.id,
p.name,
MAX(IF(c.type = 'website', c.contact, NULL)) AS 'website',
MAX(IF(c.type = 'email', c.contact, NULL)) AS 'email'
FROM
Person p INNER JOIN
PersonContact pc ON p.id = pc.Person_ID INNER JOIN
Contact c ON pc.contact_id = c.id
GROUP BY p.id
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。