我已经看到很多解释为什么 mysql 会跳过一些自动增量值(并且这不是一个错误,因为 mysql 从未声明它们应该是连续的)。我不确定为什么它们中的任何一个都适用于这个简单的测试用例。我不知道所有最新版本的mysql的结果是否相同。还添加:
ALTER TABLE test_table2 AUTO_INCREMENT = 1;
在 2 INSERT INTO test_table2 行之间按预期顺序排列。
有谁知道为什么这个简单的案例会跳过 ids 6 和 7?
CREATE TABLE test_table1 (
`id` INT NOT NULL AUTO_INCREMENT,
`test` TEXT NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO test_table1(`test`) VALUES('value 1');
INSERT INTO test_table1(`test`) VALUES('value 2');
INSERT INTO test_table1(`test`) VALUES('value 3');
INSERT INTO test_table1(`test`) VALUES('value 4');
INSERT INTO test_table1(`test`) VALUES('value 5');
CREATE TABLE test_table2 (
`id` INT NOT NULL AUTO_INCREMENT,
`test` TEXT NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO test_table2(`test`) SELECT `test` FROM test_table1;
INSERT INTO test_table2(`test`) SELECT `test` FROM test_table1;
SELECT * FROM test_table2;
我的mysql版本的结果:
'1', 'value 1'
'2', 'value 2'
'3', 'value 3'
'4', 'value 4'
'5', 'value 5'
'8', 'value 1'
'9', 'value 2'
'10', 'value 3'
'11', 'value 4'
'12', 'value 5'
提前致谢。