我有三个表(多对多的关系)items,items_to_tags及tags。在items和tags表有一个唯一的ID列,items_to_tags表中的列item_id和tag_id。有没有办法从items和tags表中选择所有结果,但将所有结果合并到同一记录中?
例如,如果我有此数据:
items:
id name
1 'item1'
2 'item2'
Run Code Online (Sandbox Code Playgroud)tags:
id name
1 'tag1'
2 'tag2'
3 'tag3'
Run Code Online (Sandbox Code Playgroud)items_to_tags:
item_id tag_id
1 1
1 2
1 3
2 3
Run Code Online (Sandbox Code Playgroud)查询结果应为:
item_id item_name tags
1 'item1' 'tag1,tag2,tag3'
Run Code Online (Sandbox Code Playgroud)
您可以使用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)
结果:
| ID | NAME | TAGS |
---------------------------------
| 1 | item1 | tag1, tag2, tag3 |
| 2 | item2 | tag3 |
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1464 次 |
| 最近记录: |