Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erstellen Sie verschiedene Ergebnismengen mit einer Ergebnismenge

Um eine Ergebnismenge in einer Abfragebedingung für eine Reihe von Abfragen zu verwenden, benötigen Sie einen Cursor.

Bitte lesen Sie die Grundlagen der Cursor-Nutzung hier und in den Dokumenten

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 ;

Sie können diese Prozedur mit

aufrufen
CALL group_results_by_date();