Я столкнулся с маловероятным событием, обработанным хранимой процедурой для MySQL. Мне удалось найти несколько строк в хранимой процедуре, но я тестирую ее, прежде чем я смогу жить.Сохраненная процедура вставляет одно и то же значение снова и снова
Моя текущая проблема заключается в том, что результат из следующего запроса возвращает 100 различных результирующих наборов.
Но когда начинается запрос на вставку, проблема. Он вставляет тот же самый @UID
снова и снова до тех пор, пока он не достигнет 100.
Есть ли способ, который я могу увеличить до следующей строки, прежде чем я даже вставлю его?
DECLARE pSpot INT(11) DEFAULT 0;
DECLARE con INT(11) DEFAULT 97;
DECLARE tempString VARCHAR(255) DEFAULT NULL;
DECLARE x INT(11) DEFAULT 0;
IF(pSpot<=97) -- condition 1
THEN
SELECT @uid:=uid,
nickname,
lastsync,
dob,
gender,
gender_preference,
Latest_LAT,
Latest_LON,
country,
imagetoken
FROM search_optimized_table
where country = @csid
and TIMESTAMPDIFF(YEAR,DOB,CURDATE()) BETWEEN minAge and maxAge
and [email protected]
and lastsync BETWEEN UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL -7 DAY))
and UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL 0 DAY))
LIMIT con;
SET con = con - pSpot;
SET pSpot = pSpot + (Select found_rows());
WHILE x <= pSpot DO
INSERT INTO temp_local_history (pUid) values (@uid);
END WHILE;
Это фактический код? Я спрашиваю, потому что он имеет условие if, которое кажется бессмысленным (и не прерывается) и бесконечным циклом while. –
@ P.Salmon это не фактическая, просто ее часть. – FreedomPride
Если ваш выбор делает то, что вы хотите, то вы можете удалить бесконечный цикл while и заменить выбор вставки, выбрав только uid, но используя то же самое, что и условия. –