我正在尝试编写一个过程,它将触发相同的select查询,直到结果数大于0.如果“interval 2 hour”返回0个记录,则“interval 4 hour “标准,并且如果仍没有记录被提取,则应在where子句中使用lastupdate> current_date()。直到在存储过程中循环
这些是过程中使用的2个基本查询。
select sql_calc_found_rows id from sometable where lastupdate > date_sub(now(), interval 2 hour) limit 10;
select found_rows();
+--------------+
| found_rows() |
+--------------+
| 41 |
+--------------+
以下步骤是否正确?这是写SP的正确方法吗?我如何在PHP代码中使用结果?
delimiter $$
create procedure mytest3()
begin
declare myvar int;
select sql_calc_found_rows id
from sometable
where lastupdate > date_sub(now(), interval 2 hour)
limit 10;
select found_rows() into myvar;
if (myvar > 0)
then select 'Found in 2 hours';
else
select sql_calc_found_rows id
from sometable
where lastupdate > date_sub(now(), interval 4 hour)
limit 10;
select found_rows() into myvar;
if (myvar > 0)
then select 'Found in 4 hours';
else
select sql_calc_found_rows id
from sometable
where lastupdate > current_date()
limit 10;
end if;
end if;
end$$
为什么你想要做这样的事情?你能描述一下这个场景吗? – shahkalpesh 2009-10-29 06:44:38
你想看看使用WHILE循环:http://dev.mysql.com/doc/refman/5.0/en/while-statement.html – 2009-10-29 06:44:55
为什么?航空公司飞行计划;试图在2小时的时间段内找到航班,如果在2小时的时间段内没有任何时间段,则会在4小时后回落,如果在4小时的时间段内没有任何时间,则会在整天后退。作为一个“例如”,当然...... – 2009-11-07 15:27:26