首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何合并两个连接表中的行?

如何合并两个连接表中的行?
EN

Stack Overflow用户
提问于 2018-06-04 01:12:50
回答 1查看 56关注 0票数 1

有两个表,可以连接,关系是1 to many。我希望结果行被合并。

例如:

表1:联系人

代码语言:javascript
复制
.------------.----------.
| contact_id | username |
:------------+----------:
|          1 | user1    |
:------------+----------:
|          2 | user2    |
:------------+----------:
|          3 | user3    |
'------------'----------'

表2:文档

代码语言:javascript
复制
.-------------.------------.----------.
| 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  |
'-------------'------------'----------'

我希望我能得到的结果是:

代码语言:javascript
复制
.------------.----------.---------------------------.
| contact_id | username |         filenames         |
:------------+----------+---------------------------:
|          1 | user1    | abc.txt, bcd.txt, cde.txt |
:------------+----------+---------------------------:
|          2 | user2    | 123.txt, 234.txt          |
:------------+----------+---------------------------:
|          3 | user3    | xyz.txt                   |
'------------'----------'---------------------------'

更新:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 01:35:05

你真的应该把你的尝试和你的问题放在一起,这样我们就可以看到你尝试了什么。这样,就很容易推动你朝着正确的方向前进,并给我们其他人留下这样的印象,即你在提出问题之前已经在这件事上付出了一些努力。Stackoverflow不是编码服务。

为了回答你的问题,

在本例中,您希望在两个表上执行INNER JOIN,并在SELECT语句中包含MYSQL函数GROUP_CONCAT();

当您查看两个表时,您有一个一致的id (contact_id),您应该在INNER JOIN中使用它将两个表链接在一起。

最后,您需要执行GROUP BY来相应地对结果进行分组,即按contact_id对结果进行分组。

您的SQL将如下所示:

代码语言:javascript
复制
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

Working SQL fiddle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50668975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档