如何在MYSQL中返回多个结果集或String数组

时间:2013-11-28 06:58:10

标签: mysql sql

我是MySQL的新手。

我需要编写一个Stored过程,它返回多个结果集,我想从java中获取这些值。 例如。我有一个表交易。我需要一个根据类别返回收入的程序:

select category ||' : '||sum(amount) 
from  transaction 
where inc_eXP='Inclome' 
group by category;

和基于类别的支出:

select category ||' : '||sum(amount) 
from  transaction 
where inc_eXP='Exp' 
group by category;

或者我可以选择返回String数组。

请帮帮我。

2 个答案:

答案 0 :(得分:0)

简单的concatgroup_concat是否对您有所帮助?

select group_concat(sum_as_string SEPARATOR '**') as final_string from(
 select concat(category, ":", sum(amount) ) as sum_as_string
 from  transaction 
 where inc_eXP='Inclome' 
 group by category
)as t;

这将导致cat1:12000 * cat2:34000 * cat3:89220。您可以使用用户集运算符。希望这有帮助

答案 1 :(得分:0)

使用条件聚合将收入和支出作为一个结果集返回

SELECT CONCAT(category, ' : ', SUM(CASE WHEN inc_exp = 'Income' THEN amount END)) income,
       CONCAT(category, ' : ', SUM(CASE WHEN inc_exp = 'Exp'    THEN amount END)) expenditure
  FROM  transaction 
 GROUP BY category;

示例输出:

|         INCOME |    EXPENDITURE |
|----------------|----------------|
| category1 : 25 |  category1 : 5 |
| category2 : 20 | category2 : 20 |

或恕我直言更清洁的方式没有将类别名称与值连接

SELECT category, 
       SUM(CASE WHEN inc_exp = 'Income' THEN amount END) income,
       SUM(CASE WHEN inc_exp = 'Exp'    THEN amount END) expenditure
  FROM  transaction 
 GROUP BY category;

示例输出:

|  CATEGORY | INCOME | EXPENDITURE |
|-----------|--------|-------------|
| category1 |     25 |           5 |
| category2 |     20 |          20 |

以下是两个查询的 SQLFiddle 演示