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

时间:2012-11-15 20:57:34

标签: mysql

我有三个表(多对多关系):itemsitems_to_tagstagsitemstags表具有唯一的ID列,items_to_tags表包含列item_idtag_id。有没有办法从itemstags表中选择所有结果,但是所有结果都合并到同一记录中?

例如,如果我有这些数据:

  • items

    id     name
    1      'item1'
    2      'item2'
    
  • tags

    id     name
    1      'tag1'
    2      'tag2'
    3      'tag3'
    
  • items_to_tags

    item_id    tag_id
    1          1
    1          2
    1          3
    2          3
    

查询结果应为:

item_id   item_name   tags
1         'item1'     'tag1,tag2,tag3'

2 个答案:

答案 0 :(得分:5)

您可以使用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

请参阅SQL Fiddle with Demo

结果:

| ID |  NAME |             TAGS |
---------------------------------
|  1 | item1 | tag1, tag2, tag3 |
|  2 | item2 |             tag3 |

答案 1 :(得分:0)

这可以使用MySQL的GROUP_CONCAT

来完成