不是回答过吗? 创建所有时间临时表 lsb,字段F1、F2,保存开始、结束时间 : DELIMITER $$ USE `aa`$$ DROP PROCEDURE IF EXISTS `tt2`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `tt2`(A1 DATETIME,A2 DATETIME) BEGIN DECLARE II INT DEFAULT 1; SET @a1=A1; WHILE @A1<=A2 DO INSERT INTO lsb VALUES(@A1,DATE_ADD(@a1, INTERVAL IF(II=1,10,9) MINUTE)); SET @a1=DATE_ADD(@a1, INTERVAL IF(II=1,11,10) MINUTE); SET II=2; END WHILE; END$$ DELIMITER ; 调用: CALL TT2('2013-10-30 00:00:00','2013-11-06 00:00:00') 计算次数: select b.f1,b.f2,count(a.*) from weather a inner join lsb b on a.时间字段 between b.f1 and b.f2 group by b.f1,b.f2
也可以在程序中定时 一分钟执行一次select语句
我要同时把所有数据都查询显示出来,所以说执行1万多次select 速度太慢了
自己修改一下不就行了 INSERT INTO lsb VALUES(@A1,DATE_ADD(@a1, INTERVAL 1 MINUTE)); SET @a1=DATE_ADD(@a1, INTERVAL 2 MINUTE);
创建所有时间临时表
lsb,字段F1、F2,保存开始、结束时间
:
DELIMITER $$ USE `aa`$$ DROP PROCEDURE IF EXISTS `tt2`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `tt2`(A1 DATETIME,A2 DATETIME)
BEGIN
DECLARE II INT DEFAULT 1;
SET @a1=A1;
WHILE @A1<=A2 DO
INSERT INTO lsb VALUES(@A1,DATE_ADD(@a1, INTERVAL IF(II=1,10,9) MINUTE));
SET @a1=DATE_ADD(@a1, INTERVAL IF(II=1,11,10) MINUTE);
SET II=2;
END WHILE;
END$$ DELIMITER ; 调用:
CALL TT2('2013-10-30 00:00:00','2013-11-06 00:00:00') 计算次数:
select b.f1,b.f2,count(a.*) from weather a inner join lsb b on a.时间字段 between b.f1 and b.f2
group by b.f1,b.f2
INSERT INTO lsb VALUES(@A1,DATE_ADD(@a1, INTERVAL 1 MINUTE));
SET @a1=DATE_ADD(@a1, INTERVAL 2 MINUTE);