2015-06-15 3 views
-3

Используя 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 

Возможно ли создать другой результирующий набор, используя один результирующий набор.

+0

Пожалуйста, укажите реальный случай использования этого. Надеюсь, что это будет другое (лучшее) решение. – Akhil

ответ

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(); 
Смежные вопросы