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

时间:2018-06-03 17:12:50

标签: mysql sql

有两个表可以连接,关系是import。我希望合并行的结果。

例如:

表1:联系人

1 to many

表2:文件

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

我希望我能得到的结果:

.-------------.------------.----------.
| 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                   |
'------------'----------'---------------------------'

1 个答案:

答案 0 :(得分:2)

您应该在问题上发布您的尝试,以便我们可以看到您尝试过的内容。通过这种方式,您可以很容易地将您推向正确的方向,并且让我们其他人留下您在提出问题之前已经付出一些努力的印象。 Stackoverflow不是编码服务。

要回答你的问题,

在这种情况下,您要做的是在两个表上执行INNER JOIN,并在GROUP_CONCAT();语句中使用MYSQL函数SELECT

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

然后,最后,您需要相应地执行GROUP BY您的结果,即通过 contact_id < group 结果 group / em>的

您的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

Working SQL fiddle