如何将一列中的值组合到一行中?
问题描述:
我有2个表:如何将一列中的值组合到一行中?
表1(让它成为'产品'):
----------------
| id | product |
----------------
| 1 | Apple |
| 2 | Grape |
| 3 | Orange |
表2(让它成为'标签'):
------------------------------
| id | product_id | tag |
------------------------------
| 1 | 1 | tag1 |
| 2 | 1 | tag2 |
| 3 | 2 | tag2 |
| 4 | 2 | tag3 |
| 5 | 3 | tag4 |
我想向请求一个SQLite数据库,它将生成如下结果表:
---------------------------
| product | tags |
---------------------------
| Apple | tag1, tag2 |
| Grape | tag2, tag3 |
| Orange | tag4 |
我该如何做到这一点?如何仅使用SQLite查询语言将标记组合到一列中?
答
我认为你在寻找什么是 “分组依据” 和 “GROUP_CONCAT()”:
select products.product,group_concat(tags.tag) from products join tags on tags.product_id = products.rowid group by tags.product_id;