我想为我的产品制作编码代码。在SQL命令中迭代50次
我已经创建了一个适当的SQL语句,它基本上使用当前时间戳并在其上运行SHA1。
我尝试了,而以前在我的INSERT命令创建一个迭代循环,但未能
有谁知道怎么样?
Do 50 times
INSERT INTO ......
end
另外,我不能有两个相同的促销代码,以便时间戳需要为每个迭代不同(如果它是在所有可能的时间戳可能是迭代之间的相同)。
我想为我的产品制作编码代码。在SQL命令中迭代50次
我已经创建了一个适当的SQL语句,它基本上使用当前时间戳并在其上运行SHA1。
我尝试了,而以前在我的INSERT命令创建一个迭代循环,但未能
有谁知道怎么样?
Do 50 times
INSERT INTO ......
end
另外,我不能有两个相同的促销代码,以便时间戳需要为每个迭代不同(如果它是在所有可能的时间戳可能是迭代之间的相同)。
用python或其他脚本语言编写代码。 对促销代码使用GUID,而不是时间戳记的散列。
我已经尝试过了,但我不会让它工作。我不是那么熟悉mySQL语法 – jax 2010-03-05 07:41:05
这是很肮脏的,但如果你有你的系统,你知道有超过50行的任何表,您可以执行以下操作:
create table promotion_code (pc varchar(100));
set @c = 1;
insert into promotion_code
select sha1(now() + (@c := @c + 1))
from mysql.help_relation limit 50;
CREATE PROCEDURE createPromotions(p1 INT)
BEGIN
SET @x = 0;
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END
某种像这样的过程会很好,但我不知道如何把它变成我需要的格式。这是重复一次SQL语句的50倍
请参阅http://stackoverflow.com/questions/2385168/iterate-50-times-over-an-sql-command/6153421#6153421 – High6 2011-05-27 14:08:27
您使用PROCEDURE的方法是我猜的最好的。我会首先设置另一个分隔符,因为您正在使用';'已经:
delimiter //
之后,定义您的程序。 INSERT INTO ......
是你的INSERT代码,你在你的问题中写了什么。
CREATE PROCEDURE createPromotions(p1 INT)
BEGIN
SET @x = 0;
REPEAT
SET @x = @x + 1;
INSERT INTO ......
UNTIL @x > p1
END REPEAT;
END
//
进入'//'后,程序准备好CALL
。如果你想执行它50次,只需要调用它50次:
CALL createPromotions(50)
使用时间戳和计数器不是更容易吗? – 2010-03-05 07:29:46