mysql - 每 5 次插入更改一些值(MySQL 存储过程)

标签 mysql sql stored-procedures

目标

每次 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/

相关文章:

mysql服务没有启动:Address already in use

php - PDO动态表名设置

php - 限制 dbal 上的 sql 结果

php - 如果设置了所有值,则插入 mysql 查询

mysql View 与存储过程

php - mysql联合搜索(多表)保持相关性

mysql Max有多个实例

MySQL 和产品交叉销售 (XSell)

MySQL 重用子查询

.net - 调试存储过程(以及编写易于调试的sproc)的最佳方法是什么?