目标
每次 5
插入时,将 CATEGORYID
增加 1
,直到 WHILE
完成。
场景
BEGIN
DECLARE MaxAnnounces INT UNSIGNED DEFAULT 5;
DECLARE Counter INT UNSIGNED DEFAULT 1;
DECLARE NewWeek INT UNSIGNED DEFAULT
(SELECT WEEKID FROM announces_empire ORDER BY WEEKID DESC LIMIT 1);
START TRANSACTION;
WHILE Counter < MaxAnnounces DO
INSERT INTO announces
(NAME, CAPTION, DESCRIPTION, IMAGEURL, LINK, CATEGORYID, WEEKID, YEARID)
VALUES
("Hello!",
"Click here.",
"Can you tell me your name?",
"example.com/img.jpg",
"google.com",
-- HERE I WANT TO INCREASE BY 1 EACH 5 INSERTS --
40,
2013);
SET Counter = Counter + 1;
END WHILE;
COMMIT;
END
问题
我不知道语法。
问题亮点
而不是 -- 这里我想每 5 个插入增加 1 --
我试图以这种方式做一些事情:
IF(Counter % 5, x + 1, 1),
其中 x
是我尚 undefined variable 。
Guilherme,你为什么不能使用这个 IF
?会发生什么?这样做插入的值总是 1
。
谁能给我一盏灯?
最佳答案
将使用以下工作:
CAST((Counter / 5) AS UNSIGNED)
或
FLOOR(Counter / 5)
或
FORMAT((Counter / 5),0)
它看起来像下面这样:
VALUES
("Hello!",
"Click here.",
"Can you tell me your name?",
"example.com/img.jpg",
"google.com",
CAST((Counter / 5) AS UNSIGNED),
40,
2013);
关于mysql - 每 5 次插入更改一些值(MySQL 存储过程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19436954/