【发布时间】:2016-01-14 03:20:43
【问题描述】:
尝试在工作台中运行一个查询,该查询将遍历所有 site_id,并针对每个站点测试我的查询。这应该很容易,但我错过了一些东西。
SET @user_id = 449;
SET @getsites.site_id = 11;
WHILE(@getsites.site_id < 535) DO
SELECT routine goes here
SET @getsites.site_id = @getsites.site_id + 1;
END WHILE;
【问题讨论】:
-
为什么不能像
select ... from table where user_id = 449 and site_id between 11 and 534这样写一个简单的SQL语句? -
将帮助我确定问题站点,如果查询一直运行直到它爆炸,而不是立即轰炸整个查询,现在它会这样做。
-
您仍然可以通过运行
select ... between 11 and 272和select ... between 273 and 534来做到这一点。看哪一个失败了。如果第一个失败,运行select ... between 11 and 142和select ... between 143 and 272等等。这就像二分搜索,您可能会比按顺序运行查找故障的步骤更少。 -
如果你仍然决定做你正在做的事情,我推荐stored procedure和select into
-
查询只接受一个 site_id 而不是一个范围,所以只想做一个简单的循环或 while