2015-10-15 74 views
0

试图在工作台上,将循环直通所有site_ids和测试我的查询对他们每个人的运行查询。这应该很容易,但我错过了一些东西。环流式SQL查询在MySQL Workbench中

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; 
+2

为什么你不只是写这样一个简单的SQL语句'选择...从表,其中USER_ID = 449和11 534'之间SITE_ID? – zedfoxus

+0

将帮助我锁定问题网站,如果查询运行到炸弹,而不是立即轰炸整个查询,它现在执行。 –

+1

你仍然可以通过运行'select ... between 11 and 272'和'select ... between 273 and 534'来达到目的。看哪一个失败。如果第一个失败,请运行'select ... between 11 and 142'和'select ... between 143 and 272'等等。这就像二分搜索,你可能会发现问题的步骤少于按顺序寻找失败的步骤。 – zedfoxus

回答

0

我与他人分享了一个proc块,您可以将其转换为您的需求。

DELIMITER $$ 
USE test$$ -- database name 
DROP PROCEDURE IF EXISTS proc_name$$ 
CREATE PROCEDURE proc_name() 
BEGIN 
DECLARE user_id INT(3) DEFAULT 0; 
DECLARE site_id INT(4) DEFAULT 0; 
SET site_id = 11; 
REPEAT 
    SELECT 1; -- routine goes here [execute your logic here] 
    SET site_id = site_id + 1; 
UNTIL site_id < 535 END REPEAT; 
SELECT "Proc completed" AS Result; 
END$$ 

DELIMITER ; 

首先尝试使用SQL,如果不可能,则尝试过程。

+0

非常感谢,我会试试这个。 –