2017-08-17 114 views
0

为什么自动增量列不会增加Insert into from other mysql table查询中的ID号?这里是我的查询:自动增量列不会增加mysql表中的数字

insert into tbl_1 (pk, col_a, col_b, col_c) 
select null,col_a, col_b, col_c from tbl_2 

pktbl_1总是返回相同数量即“1”,“1”,“1” ......谁能告诉我什么是价值,我应该用于自动递增选择列,以便它将返回'1','2','3',...等等。我在tbl_2中有大量记录,并且没有pk列。这可能是一个简单的问题,但我无法解决它。

+0

什么是您的桌子的ddl,请问您能表明什么? – Pirate

+0

'CREATE TABLE tbl_1( \t'pk' BIGINT(100)NOT NULL AUTO_INCREMENT, \t'col_a' VARCHAR(50)NOT NULL DEFAULT '', \t'col_b' VARCHAR(30)NOT NULL DEFAULT '', \t'col_c' VARCHAR(30)NOT NULL DEFAULT'' \t PRIMARY KEY('pk','col_a','col_b' );' – mitedu

回答

1

更改您的插入查询,

insert into tbl_1 (pk, col_a, col_b, col_c) 
select null,col_a, col_b, col_c from tbl_2 

insert into tbl_1 (col_a, col_b, col_c) 
select col_a, col_b, col_c from tbl_2 

你并不需要同时插入到指定自动递增列。

对于批量插入自动增量将不起作用。你必须使用diff方法。为您尝试此查询,

insert into tbl_1 (pk, col_a, col_b, col_c) 
select @curRank := @curRank + 1 AS rank,col_a, col_b, col_c from tbl_2, (SELECT @curRank := 0) rn order by col_a 

希望它会有所帮助。

+0

不,它不起作用,我也尝试过。像列数不匹配第1行的值计数 – mitedu

+0

不要在插入时使用null你得到这个错误是因为你在空值中指定了额外的值 – Pirate

+0

如果我在select语句中不使用null,那么它会给我'1','1','1','1'.....在'pk'列中我在我的问题中解释。 – mitedu

0

无需在插入查询中指定自动增量列。

insert into tbl_1 (col_a, col_b, col_c) select col_a, col_b, col_c from tbl_2

+0

谢谢,但它现在工作正常。 – mitedu