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,谢谢你的评论。是的,你说得对。下次,当我在这里提问时,我会注意礼貌。根据你的回答,我更新了我的。这是否意味着问题已经被披露,或者?考虑接受一个你发现有用的答案来揭示你的问题。