我面临由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 gender=@tempString
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;
答案 0 :(得分:0)
好吧,我做了一个解决方案,因为游标方法返回0。
IF(pSpot<=97) -- condition 1
THEN
SET con = con - pSpot;
INSERT INTO temp_local_search(
SELECT @uid:=uid FROM search_optimized_table where country = @csid and TIMESTAMPDIFF(YEAR,DOB,CURDATE()) BETWEEN minAge and maxAge and gender=@tempString and lastsync BETWEEN UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL -7 DAY)) and UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL 0 DAY)) LIMIT con
);