使用连续数插入MySQL
我正在使用以下语句复制表中的一行:使用连续数插入MySQL,mysql,sql,sql-insert,Mysql,Sql,Sql Insert,我正在使用以下语句复制表中的一行: insert into Buyer ( version, creationDate, password, token, username, zip, city, lastname, firstname, preferredLanguage_id, title_id, contactEmail_id, active ) select version, creationDate, password, token, "loadtest_1@examp
insert into Buyer (
version, creationDate, password, token, username, zip, city, lastname, firstname, preferredLanguage_id, title_id, contactEmail_id, active
) select
version, creationDate, password, token, "loadtest_1@example.com", zip, city, lastname, firstname, preferredLanguage_id, title_id, contactEmail_id, active
from Buyer where username="developer_de@example.com";
我唯一更改的是用户名/电子邮件。现在要插入的新用户名中的数字是“loadtest”_1@example.com“,应每次递增。所以第二个应该是loadtest_2…,loadtest_3等等。我真的不在乎它开始的数字是多少,只要它是连续的,所以获取新插入行的ID或类似的ID就完全可以了
对于如何实际创建一批这些插入的想法,我感到非常荣幸,这样我就不必运行X次了。您正在选择并插入到同一个表中,唯一的更改是
用户名
。我看到的是你需要一个更新语句
update Buyer set username = 'loadtest_1@example.com'
where username="developer_de@example.com";
如果它是test,并且您确实希望插入测试数据,比如loadtest_1@example.com .. 负荷试验_100@example.com
然后您可以在使用的同时使用类循环
CREATE PROCEDURE usp_inserttestdata(total INT)
AS
BEGIN
DECLARE counter INT;
DECLARE uname varchar(20);
SET counter = 1;
label1: WHILE counter <= total DO
SET uname = concat('loadtest_', counter, '@example.com');
insert into Buyer (
version, creationDate, password, token, username, zip, city, lastname,
firstname, preferredLanguage_id, title_id, contactEmail_id, active)
select version, creationDate, password, token, uname, zip, city, lastname, firstname,
preferredLanguage_id, title_id, contactEmail_id, active
from Buyer where username="developer_de@example.com";
SET counter = counter + 1;
END WHILE label1;
END
您可以使用触发后插入操作来实现您的目标。在该触发器的正文中,更新电子邮件并设置相应的值取决于自动增量id值。更新现有行并按新名称复制不是同一个任务-我猜OP希望添加X个新用户,而不是更新单个用户X次。@HubertGrzeskowiak,请再次检查编辑应答!这绝对是我想要的。只有有什么东西不见了吗?因为我的mysql客户端告诉我在那个位置不允许声明。我需要一个程序或是一些关于代码的东西吗?@HubertGrzeskowiak,是的,这只是主要的代码逻辑。你需要把它包装成一个begin。。end
在一个过程中阻止哪个应该。一个需要开始次数和重复次数的存储过程如何?在存储过程中,您更新for循环中的名称字符串。@PaulF这就是被接受的答案的作用:-)在我回复时,Rahul只给出了更新解决方案-我对其进行了评论-编辑必须同时完成。:-)
CALL usp_inserttestdata 1000