我有三个表(多对多关系):items
,items_to_tags
和tags
。 items
和tags
表具有唯一的ID列,items_to_tags
表包含列item_id
和tag_id
。有没有办法从items
和tags
表中选择所有结果,但是所有结果都合并到同一记录中?
例如,如果我有这些数据:
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'
答案 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
结果:
| ID | NAME | TAGS |
---------------------------------
| 1 | item1 | tag1, tag2, tag3 |
| 2 | item2 | tag3 |
答案 1 :(得分:0)
这可以使用MySQL的GROUP_CONCAT。
来完成