今天在项目中有这样一个需求,就是需要把table1里面的a,b,c三个字段通过按a,b分组,对c进行汇总,然后插入到table2中的a,b,c中,然后我就这样写的SQL语句:
insert into table2(a,b,c) select a,b,sum(c) c from table1 group by a,b;
这样一写,问题又出现了table2有个主键id,但不是自增长的,需要在插入的时候自己给主键设值。于是我找老大要求把id改成自增长的,老大不同意。考虑到每次在把table1里面的数据插入到table2中的时候,table2都是空的,无奈,我只能写了这样一个实现id自增长的一个函数getId:
create function getId() returns int begin
set @id = @id + 1;
return @id;
end;
然后在每次进行插入前都把id设为0,使id从1开始,于是我的SQL语句就成了下面这个样子:
set @id = 0;
insert into table2(id,a,b,c) select getId() id,a,b,sum(c) c from table1 group by a,b;
此外如果想删除该函数的话可以使用命令:
drop function getId;