使用insert into table ....select ...的方式插入数据后,table的自增列的值比插入条数要多很多。
例子:
CREATE TABLE test (
jid int(10) unsigned NOT NULL AUTO_INCREMENT,
jnum int(10) unsigned DEFAULT NULL,
PRIMARY KEY (jid)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
-- now: auto_increment = 1
INSERT INTO test(jnum) VALUES (1);
INSERT INTO test(jnum) VALUES (2);
-- now: auto_increment = 3
truncate table test ;
-- now: auto_increment = 1
INSERT INTO test(jnum)
select 1 union
select 2 ;
-- now: auto_increment = 4
额,错误原因不是很明显啊。希望你能提供更多的出错信息。
不用管自增的id,直接添加其他元素,自增列会自动增加,
正规写法时建议写上 from dual,因为操作复杂后数据库不容易分辨是否是默认的dual表了,所以不写很容易出错,建议加上!
INSERT INTO test(jnum)
select 1 from dual union
select 2 from dual;
因为你的自增器以前用过,他是在原来的基础上增加的,所以不是从1开始的,如果你想从1开始的话,
可以重新建个自增器,这样就是从1开始了。自增器中即使你删除了数据,它的自增ID也会在删掉的基础上进行,不会变小。
由于数据有删除操作,就会出现自增值比记录数大。