使用Increment变量插入INTO

时间:2017-02-24 12:17:22

标签: mysql variables insert

我想要一个INSERT INTO查询,我更新的其中一个字段是计算的var' mycount' - 这将是查询中插入行的编号。

例如: 如果我插入3行,我希望这个var是' 1'对于插入的第一行,' 2'对于第二个,等等。

SET @mycount=0;
INSERT INTO my_table
(@mycount,field1,field2,field3...)
SET @mycount=@mycount+1;
SELECT @mycount,field1,field2,field3..
FROM my_table
WHERE id IN (id1,id2,id3..);

此代码返回错误。 如何在INSERT INTO查询中声明一个变量,并在插入每一行时使其递增?

重要 - 我不需要AUTO-INCREMENT列 - 这是需要仅在此特定INSERT INTO查询中执行的计算的一部分,并且它只是计算的一部分。 我需要的是(number_of_inserted_row + some_other_calculation)的计算,但我只是为了这个问题简化了它。

2 个答案:

答案 0 :(得分:1)

嗯,通常会使用auto_increment列。如果你不想出于某种原因,你可以这样做:

INSERT INTO my_table
(your_quasi_auto_increment_column, field1, field2, field3...)
SELECT (@mycount := @mycount + 1) + <other_calculation>, field1, field2, field3..
FROM my_table
, (SELECT @mycount := 0) var_init_query_alias
WHERE id IN (id1,id2,id3..);

答案 1 :(得分:0)

您可以使用添加新的字段来执行此操作,您希望将其插入为count_number,并定义此字段的自动增量,而不需要在此查询中插入

 SET @test=1;
 INSERT INTO test (`test`,`test2`,`test3`)
 SELECT (@test := @test +1) AS `test`,`test2`,`test3`
 FROM test

如果你想添加新文件 然后检查此代码

SET @count_value=0;
 INSERT INTO test (`count_value`,`test`,`test2`,`test3`)
 SELECT (@count_value := @count_value +1) AS `count_value`,`test`,`test2`,`test3`
 FROM test

在my_table1中添加字段count_number并输入int并添加自动增量然后它将起作用