首页 > 解决方案 > MySQL加入分组没有完美加入

问题描述

我有三个表并想加入它们,但是当使用联系人表中的父 ID 分组时,加入会多次返回单行。

contact桌子-

ID 姓名
1 穆拉德
2 泰哈鲁尔

phone桌子-

ID 联系人 ID 电话
1 1 017
2 2 014
3 2 015

email桌子-

ID 联系人 ID 电子邮件
1 1 mur@test.com
2 1 has@test.com
3 1 tan@test.com
4 2 taj@test.com
5 2 har@test.com

所需的输出 -

ID 姓名 电话 电子邮件
1 穆拉德 017 mur@test.com,has@test.com,tan@test.com
2 泰哈鲁尔 014,015 taj@test.com,har@test.com

这是我迄今为止尝试过的 -

SELECT contact.name , GROUP_CONCAT(phone.phone) phone, GROUP_CONCAT(email.email) email
FROM 
    contact 
    JOIN phone ON contact.id = phone.contact_id
    JOIN email ON contact.id = email.contact_id
GROUP BY contact.id

MySQL 小提琴链接:http ://sqlfiddle.com/#!9/ded29f/1

标签: mysqljoingroup-concat

解决方案


在 group_concat 中使用 DISTINCT

SELECT contact.name , GROUP_CONCAT(DISTINCT phone.phone) phone, GROUP_CONCAT(DISTINCT email.email) email
FROM 
    contact 
    JOIN phone ON contact.id = phone.contact_id
    JOIN email ON contact.id = email.contact_id
GROUP BY contact.id

推荐阅读