使用一个结果集创建不同的结果集[关闭]

Posted

技术标签:

【中文标题】使用一个结果集创建不同的结果集[关闭]【英文标题】:Create different result set using one result set [closed] 【发布时间】:2015-06-15 09:05:55 【问题描述】:

通过使用mysql,我得到了类似的结果

    count   date        content
    19      2015-01-02  test1
    6       2015-01-02  test2
    3       2015-01-03  test3
    12      2015-01-04  test4
    48      2015-01-04  test5
    10      2015-01-05  test6

我想使用日期值将该结果划分为不同的结果集。我想要这样的结果集,

    count   date        content
    19      2015-01-02  test1
    6       2015-01-02  test2

    count   date        content
    3       2015-01-03  test3
    12      2015-01-03  test4

    count   date        content
    48      2015-01-04  test5
    10      2015-01-04  test6

是否可以使用一个结果集创建不同的结果集。

【问题讨论】:

请提及这个的真实用例。希望会有不同(更好)的解决方案。 【参考方案1】:

要在查询条件中为一组查询使用结果集,您需要一个游标。

请查看here 和docs 中的光标使用基础知识

DELIMITER $$

CREATE PROCEDURE group_results_by_date 
BEGIN

 DECLARE v_finished INTEGER DEFAULT 0;
 DECLARE cdate DATE DEFAULT "2015-01-01";

 -- declare cursor for getting list of dates
 DEClARE date_cursor CURSOR FOR 
    SELECT DISTINCT (date) FROM yourtable;

 -- declare NOT FOUND handler
 DECLARE CONTINUE HANDLER 
        FOR NOT FOUND SET v_finished = 1;

 OPEN date_cursor;

 get_content: LOOP

 FETCH date_cursor INTO cdate;

 IF v_finished = 1 THEN 
 LEAVE get_content;
 END IF;

 -- Select query for different dates
 Select count, date, content from yourtable where date = cdate;

 END LOOP get_content;

 CLOSE date_cursor;

END$$

DELIMITER ;

你可以调用这个过程

CALL group_results_by_date();

【讨论】:

以上是关于使用一个结果集创建不同的结果集[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SQLException:结果集已关闭

Spring Boot 异步结果集已关闭

为啥 libsvm 在同一数据集上创建不同的结果

如何在java中合并来自两个不同数据库的两个不同结果集

结果集自动关闭并显示错误结果集关闭后不允许操作

连接关闭时结果集未关闭?