DROP PROCEDURE IF EXISTS extract_data;
DELIMITER //
CREATE PROCEDURE extract_data()
BEGIN
DECLARE not_found INT DEFAULT 0;
DECLARE _id INT;
DECLARE _datetime DATETIME;
DECLARE _cnt INT;
DECLARE _ext INT;
DECLARE cur CURSOR FOR
SELECT id,`datetime` FROM t_record;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1;
OPEN cur;
loop2: LOOP
FETCH cur INTO _id, _datetime;
IF not_found THEN
SET not_found = 0;
CLOSE cur;
LEAVE loop2;
END IF;
SELECT COUNT(*) FROM tmpT WHERE `id`=_id AND `datetime` BETWEEN _datetime - INTERVAL 5 MINUTE AND _datetime INTO _cnt;
IF _cnt = 0 THEN
SET _ext = 1;
INSERT INTO tmpT VALUES (_id, _datetime);
END IF;
END LOOP;
END
//
DELIMITER ;
CREATE TEMPORARY TABLE IF NOT EXISTS tmpT (`id` INT, `datetime` DATETIME);
CALL extract_data();
SELECT * FROM tmpT;