挿入選択クエリをテストしていて、奇妙な結果に気付きました。
CREATE TABLE `test` (
`cnt` int(11) NOT NULL AUTO_INCREMENT,
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`cnt`)
)
CREATE TABLE `test_current` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
)
最初に 2 つのテーブルを作成し、いくつかの値を test_current に挿入します
mysql> insert into test_current (a,b) values (1,1),(2,2);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
そして、私はこのクエリを実行しました
mysql> INSERT INTO test (a,b) SELECT a,b FROM test_current;
Query OK, 2 rows affected, 1 warning (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 1
mysql> select * from test;
+-----+------+------+
| cnt | a | b |
+-----+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
+-----+------+------+
2 rows in set (0.00 sec)
しかし、もう一度クエリを実行したとき
mysql> INSERT INTO test (a,b) SELECT a,b FROM test_current;
Query OK, 2 rows affected, 1 warning (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 1
mysql> select * from test;
+-----+------+------+
| cnt | a | b |
+-----+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 4 | 1 | 1 |
| 5 | 2 | 2 |
+-----+------+------+
自動インクリメントで cnt が 3 スキップされました。これが何なのか知りたいです。