我有下表:
| id | 代码 | 金额 | 数量 |
|---|---|---|---|
| 1 | 1 | 25 | 36 |
| 2 | 2 | 30 | 6 |
| 3 | 5 | 100 | 1 |
| 4 | 1 | 25 | 100 |
| 5 | 1 | 20 | 1 |
| 6 | 4 | 10 | 136 |
| 7 | 1 | 10 | 20 |
我想找到 code = 1 的所有金额的总和,并且对于所有此类事件,还需要所有数量的逗号分隔值和所有 id 的逗号分隔值。
例如: 输出应如下所示:
| 代码 | 金额 | 数量 | id |
|---|---|---|---|
| 1 | 80 | 36, 100,1, 20 | 1,4,5,7 |
我知道我可以做类似的事情
SELECT code ,SUM(amount) FROM table1 where code = 1 group by code;
用于获取与该代码相对应的总和,但不知道如何获取所有此类数量和 ID。
DBFiddle
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
在 MySQL 中,您可以使用
GROUP_CONCAT查询#1
select code, sum(amount) as total_amount, GROUP_CONCAT(id) as ids, GROUP_CONCAT(qty) qts from yourTable where code = 1 GROUP BY code;在 DB Fiddle 上查看
在 Postgres 中,您可以使用
string_agg查询#1
select code, sum(amount) as total_amount, string_agg(id::text,',') as ids, string_agg(qty::text , ',') qts from yourTable where code = 1 GROUP BY code;在 DB Fiddle 上查看
您可以简单地使用
GROUP_CONCAT对所有数据进行分组:GROUP_CONCAT默认使用逗号 (,) 作为分隔符,因此您可以编写相同的查询:如果您想要一些其他分隔符,您也可以专门定义它。