mysql - INSERT INTO with Increment 变量

标签 mysql variables insert

我想要一个 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/

相关文章:

mysql - 关系数据库设计 - 大学提供的类(class)

c# - 如何捕获文本框的值并将其用作变量?

mysql - 主键是否可能不是自动增量?

MySQL 与子查询不同

php - 在 PHP 中循环遍历 SQL 结果 - 没有得到整个数组

mysql - 我的数据库中的 Mysql 语法出现错误 1136

c++ - 对象的内存分配

variables - async/Await执行后结果为空

ios - 值在数据库中插入两次

sql - 在 Access 中使用自动编号 - INSERT 语句