存储过程一遍又一遍地插入相同的值

时间:2016-12-14 08:02:54

标签: mysql stored-procedures

我面临由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;

1 个答案:

答案 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
                );