今天在项目中有这样一个需求,就是需要把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;
本文介绍了一种SQL操作技巧,即如何将table1中的a、b字段进行分组,并对c字段进行汇总,同时解决table2主键id自增长的问题。文中详细展示了具体的SQL语句及自定义函数getId的创建与应用。
4152

被折叠的 条评论
为什么被折叠?



