我有三個表并想加入它們,但是當使用聯系表中的父 ID 分組時,連接多次回傳單行。
contact 桌子-
| ID | 姓名 |
|---|---|
| 1 | 穆拉德 |
| 2 | 泰哈魯 |
phone 桌子-
| ID | contact_id | 電話 |
|---|---|---|
| 1 | 1 | 017 |
| 2 | 2 | 014 |
| 3 | 2 | 015 |
email 桌子-
| ID | contact_id | 電子郵件 |
|---|---|---|
| 1 | 1 | [email protected] |
| 2 | 1 | [email protected] |
| 3 | 1 | [email protected] |
| 4 | 2 | [email protected] |
| 5 | 2 | [email protected] |
期望輸出-
| ID | 姓名 | 電話 | 電子郵件 |
|---|---|---|---|
| 1 | 穆拉德 | 017 | [email protected],[email protected],[email protected] |
| 2 | 泰哈魯 | 014,015 | [email protected],[email protected] |
這是我迄今為止嘗試過的-
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
uj5u.com熱心網友回復:
您可以通過在 Group concat 中使用 subquery 和 Distinct 來實作這一點:
SELECT T1.id, T1.name, T1.phone, GROUP_CONCAT(DISTINCT email.email) email
FROM
(SELECT contact.id, contact.name , GROUP_CONCAT(DISTINCT phone.phone) phone
FROM
contact
JOIN phone ON contact.id = phone.contact_id
GROUP BY contact.id) T1
JOIN email ON T1.id = email.contact_id
GROUP BY T1.id
uj5u.com熱心網友回復:
在 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/365535.html
