Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用连续数插入MySQL_Mysql_Sql_Sql Insert - Fatal编程技术网

使用连续数插入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