MySQL将一个表中的值连接到另一个表中的记录

use*_*863 3 mysql

我有三个表(多对多的关系)itemsitems_to_tagstags。在itemstags表有一个唯一的ID列,items_to_tags表中的列item_idtag_id。有没有办法从itemstags表中选择所有结果,但将所有结果合并到同一记录中?

例如,如果我有此数据:

查询结果应为:

item_id   item_name   tags
1         'item1'     'tag1,tag2,tag3'
Run Code Online (Sandbox Code Playgroud)

Tar*_*ryn 6

您可以使用MySQL GROUP_CONCAT()

select i.id,
  i.name,
  group_concat(t.name SEPARATOR ', ') tags
from items i
left join items_to_tags it
  on i.id = it.item_id
left join tags t
  on it.tag_id = t.id
group by i.id, i.name
Run Code Online (Sandbox Code Playgroud)

参见带有演示的SQL Fiddle

结果:

| ID |  NAME |             TAGS |
---------------------------------
|  1 | item1 | tag1, tag2, tag3 |
|  2 | item2 |             tag3 |
Run Code Online (Sandbox Code Playgroud)