MySQL 用 While 循环插入
Posted
技术标签:
【中文标题】MySQL 用 While 循环插入【英文标题】:MySQL Insert with While Loop 【发布时间】:2015-01-14 21:48:23 【问题描述】:我正在尝试在我的 mysql 数据库中创建一堆记录。这是一次创建,所以我不想创建存储过程。这是我的代码:
BEGIN
SET i = 2376921001;
WHILE (i <= 237692200) DO
INSERT INTO `mytable` (code, active, total) values (i, 1, 1);
SET i = i+1;
END WHILE;
END
这是错误:
[查询 1 中的错误] 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'SET i = 2376921001 附近使用正确的语法 虽然(我 coupon(第 2 行的优惠券Cod' 执行停止!
我尝试了一个具有相同结果的声明。代码如下:
BEGIN
DECLARE i INT unsigned DEFAULT 2376921001;
WHILE (i <= 237692200) DO
INSERT INTO `mytable` (code, active, total) values (i, 1, 1);
SET i = i+1;
END WHILE;
END
我尝试过的另一件事是使用@i 而不仅仅是 i。同样的错误。 谁能看到我做错了什么?
【问题讨论】:
你的表的定义是什么......'code'是如何声明的? 代码是一个 varchar。运行此命令时出现相同的错误: BEGIN DECLARE @i VARCHAR unsigned DEFAULT 1001; WHILE (i coupon (couponCode, active, totalUses) 值 (i, 1, 1);设置 i = i+1;结束;结束 【参考方案1】:drop procedure if exists doWhile;
DELIMITER //
CREATE PROCEDURE doWhile()
BEGIN
DECLARE i INT DEFAULT 2376921001;
WHILE (i <= 237692200) DO
INSERT INTO `mytable` (code, active, total) values (i, 1, 1);
SET i = i+1;
END WHILE;
END;
//
CALL doWhile();
【讨论】:
虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。【参考方案2】:你不能这样使用WHILE
;见:mysql DECLARE WHILE outside stored procedure how?
您必须将代码放入存储过程中。示例:
CREATE PROCEDURE myproc()
BEGIN
DECLARE i int DEFAULT 237692001;
WHILE i <= 237692004 DO
INSERT INTO mytable (code, active, total) VALUES (i, 1, 1);
SET i = i + 1;
END WHILE;
END
小提琴:http://sqlfiddle.com/#!2/a4f92/1
或者,使用您喜欢的任何编程语言生成INSERT
语句列表;对于一次性的创作,应该没问题。例如,这是一个 Bash 单行代码:
for i in 2376921001..2376921099; do echo "INSERT INTO mytable (code, active, total) VALUES ($i, 1, 1);"; done
顺便说一句,你的数字打错了; 2376921001 有 10 个数字,237692200 只有 9 个。
【讨论】:
是的,提供了数字,我没有进去查看。谢谢你抓住那个。我从你的帖子中得到的是,没有办法用 SQL 来做到这一点。我必须提取代码并使用 php 生成每个单独的语句。 @jessier3:你误会了;在 MySQL 中是完全有可能的。我添加了示例代码和一个小提琴来澄清。但请随意使用替代方法;任何你觉得方便的东西。 这已经有一段时间了,我忘了回来评论。这行得通。感谢您的帮助。 我有一个带有 5.1 的#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
...关于这应该可以工作的文档:/
@Megachip 请使用十六进制查看器检查您的 SQL 语句;里面可能有一些不可见的 Unicode 字符。以上是关于MySQL 用 While 循环插入的主要内容,如果未能解决你的问题,请参考以下文章