我想要一个 INSERT INTO 查询,我更新的其中一个字段是计算的 var 'mycount' - 这将是查询中插入行的编号。
例如: 如果我插入 3 行,我希望此变量对于插入的第一行为“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) 的计算,但我只是为了问题的缘故对其进行了简化。
最佳答案
嗯,通常为此使用一个 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..);
关于mysql - INSERT INTO with Increment 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42438440/