将多个记录中的一列合并到一个单元格中

问题描述 投票:0回答:1

我有这两张表:

+----------------------------------------+
| orders                                 |
+----+----------+------------+-----------+
| id | customer | datetime   | more_info |
+----+----------+------------+-----------+
| 19 | 373      | 1727608300 | nada      |
| 20 | 358      | 1727706300 | something |
+----+----------+------------+-----------+

+-------------------------------------+
| orderlines                          |
+----+----------+------------+--------+
| id | order_id | article_id | amount |
+----+----------+------------+--------+
| 3  | 19       | 22         | 1      |
| 4  | 19       | 28         | 2      |
| 5  | 19       | 42         | 1      |
| 6  | 20       | 22         | 2      |
| 7  | 20       | 69         | 1      |
+----+----------+------------+--------+

我想对 MySQL 进行查询,得到这个结果:

+--------------------------+
| result                   |
+----+----------+----------+
| id | customer | articles |
+----+----------+----------+
| 19 | 373      | 22,28,42 |
| 20 | 358      | 22,69    |
+----+----------+----------+

当我搜索解决方案时,我得到的结果比我需要的或 MS SQL (STRING_AGG) 更广泛,也许我在搜索中没有使用正确的关键字。

有人可以帮助我吗?

sql mysql
1个回答
0
投票

根据 id 连接两个表并使用 STRING_AGG 获取文章列

SELECT o.id,
       o.customer,
       STRING_AGG(ol.article_id,',') as articles 
FROM orders o
INNER JOIN orderlines oi on oi.id=o.id     



                
© www.soinside.com 2019 - 2024. All rights reserved.