Mysql 如何合并两个联接表中的行?

Mysql 如何合并两个联接表中的行?,mysql,sql,Mysql,Sql,有两个表可以联接,它们之间的关系是1对多。我希望结果行被合并 例如: 表1:联系人 .------------.----------. | contact_id | username | :------------+----------: | 1 | user1 | :------------+----------: | 2 | user2 | :------------+----------: | 3 | user3 |

有两个表可以联接,它们之间的关系是
1对多
。我希望结果行被合并

例如:

表1:联系人

.------------.----------.
| contact_id | username |
:------------+----------:
|          1 | user1    |
:------------+----------:
|          2 | user2    |
:------------+----------:
|          3 | user3    |
'------------'----------'
表2:文件

.-------------.------------.----------.
| document_id | contact_id | filename |
:-------------+------------+----------:
|           1 |          1 | abc.txt  |
:-------------+------------+----------:
|           2 |          1 | bcd.txt  |
:-------------+------------+----------:
|           3 |          1 | cde.txt  |
:-------------+------------+----------:
|           4 |          2 | 123,txt  |
:-------------+------------+----------:
|           5 |          2 | 234.txt  |
:-------------+------------+----------:
|           6 |          3 | xyz.txt  |
'-------------'------------'----------'
我希望我能得到的结果是:

.------------.----------.---------------------------.
| contact_id | username |         filenames         |
:------------+----------+---------------------------:
|          1 | user1    | abc.txt, bcd.txt, cde.txt |
:------------+----------+---------------------------:
|          2 | user2    | 123.txt, 234.txt          |
:------------+----------+---------------------------:
|          3 | user3    | xyz.txt                   |
'------------'----------'---------------------------'
更新:

SELECT c.contact_id, c.username, GROUP_CONCAT(d.filename) as filenames 
FROM contacts c 
LEFT JOIN documents d 
ON c.contact_id = d.contact_id 
GROUP BY c.contact_id

你应该用你的问题发布你的尝试,这样我们就可以看到你尝试了什么。这样,你就可以很容易地把你推向正确的方向,同时也会给我们留下这样的印象:在提出问题之前,你已经在这件事上付出了一些努力。Stackoverflow不是编码服务

回答你的问题,

在本例中,您要做的是对两个表执行
内部联接
,并使用MYSQL函数
GROUP_CONCAT(),在
语句中选择

当您查看两个表时,您有一个一致的id(contact_id),您应该在
内部联接中使用该id将两个表链接在一起

最后,您需要执行
分组依据
对结果进行相应分组,即按联系人id对结果进行分组

您的SQL将如下所示:

SELECT
  tbl_contacts.contact_id,
  tbl_contacts.username,
  GROUP_CONCAT(tbl_documents.filename) as file_name
FROM
  tbl_contacts
INNER JOIN
  tbl_documents ON tbl_contacts.contact_id = tbl_documents.contact_id
GROUP BY
  tbl_contacts.contact_id

使用“丛林”组\u concat。你试过什么?这是一个非常简单的应用程序,
JOIN
,groupby`和
GROUP_CONCAT()
。嗨,@HariramanRadhakrishnan,你能给我看看代码吗?对不起,我不熟悉group_concat,我以前找到过它,但我不知道如何使用它来存档上述内容。提前谢谢!嗨@GordonLinoff,对不起,我试过了。由于缺乏SQL知识,我没有成功。让我再试一次@HariramanRadhakrishnan,谢谢!嗨,@Martin,谢谢你的评论。是的,你说得对。下次,当我在这里提问时,我会注意礼貌。根据你的回答,我更新了我的。这是否意味着问题已经被披露,或者?考虑接受一个你发现有用的答案来揭示你的问题。