2015-10-15 9 views
0

пытается запустить запрос в workbench, который будет циклически проходить через все идентификаторы сайта и проверять мой запрос по каждому из них. это должно быть легко, но я чего-то не хватает.Looping 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, например 'select ... из таблицы где user_id = 449 и site_id между 11 и 534'? – zedfoxus

+0

поможет мне связать проблемный сайт, если запрос запустится до тех пор, пока он не начнет бомбить, а просто бомбардирует сразу по всему запросу, что он делает сейчас. –

+1

Вы все еще можете сделать это, выполнив 'select ... между 11 и 272' и' select ... между 273 и 534'. Посмотрите, какой из них не удается. Если первый не удается, запустите 'select ... между 11 и 142' и' выберите ... между 143 и 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

большое спасибо, я попробую это. –

 Смежные вопросы

  • Нет связанных вопросов^_^