【发布时间】:2009-10-29 06:40:12
【问题描述】:
我正在尝试编写一个程序,该程序将触发相同的选择查询,直到结果数超过 0。如果“间隔 2 小时”返回 0 条记录,则应使用“间隔 4 小时”标准,如果仍然没有提取记录,那么 lastupdate > current_date() 应该用在 where 子句中。
这些是过程中使用的 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$$
【问题讨论】:
-
你为什么要做这样的事情?你能描述一下这个场景吗?
-
您想研究使用 WHILE 循环:dev.mysql.com/doc/refman/5.0/en/while-statement.html
-
为什么?航空公司飞行计划;尝试在 2 小时的时段内查找航班,如果 2 小时的时段内没有航班,则返回 4 小时,如果 4 小时的时段内没有,则返回一整天。作为一个“例子”,当然......