列表中项目的MariaDB循环

qacovj5a  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(106)

我想循环遍历一个预先生成的值列表,并为每个项目插入一些数据到表中。

DELIMITER //
START TRANSACTION;
FOR myitem IN (1, 5, 6, 14, 73, 811)
DO
    INSERT INTO `TestTable` (`userid`, `info`) VALUES (myitem, 'test input')'
END FOR;
ROLLBACK;
//

我在列表的开头得到一个语法错误。(使用MariaDB 10.7和for循环使用1..5
我已经检查了文档here,但它没有显示使用定义的列表。

wa7juj8i

wa7juj8i1#

FOR IN()循环只支持序列,列表只能用于IN()条件。
一个简单的纯SQL解决方案是将值移动到WHERE条件中:

INSERT INTO TestTable(userid, info) 
  SELECT seq, "test_input" FROM seq_1_to_811 
  WHERE seq IN (1, 5, 6, 14, 73, 811);

一个更好和更快的方法是在客户端应用程序中使用批处理执行来处理这个问题:
Python示例:

ids= [(1,),(5,),(6,),(14,),(73,),(811,)];
cursor.executemany("INSERT INTO TestTable(userid,info) VALUES (?, 'test')", ids);

相关问题