sql存储过程如何实现动态根据表数据复制一个表的数据到另一个表
这篇文章给大家分享的是有关sql存储过程如何实现动态根据表数据复制一个表的数据到另一个表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
动态根据表数据复制一个表的数据到另一个表
把track表的记录 根据mac_id后两位数字,复制到对应track_? 的表中
如:mac_id=12345678910,则后两位10 对应表为track_10,就把此记录复制到track_10中
创建一个 sub_track的存储过程实现:
--创建一个名为sub_track的存储过程CREATEPROCEDUREsub_track()begindeclareiint;--定义循环变量iset@imei=0;--定义imei最后两位set@t_count=0;--定义表有多少条记录变量SETi=0;SELECTCOUNT(*)INTO@t_countFROMtrack;--获取表的条数whilei<=@t_countdo--循环SELECTRIGHT(mac_id,2)INTO@imeiFROMtrackORDERBYgpstimeDESCLIMITi,1;--获取imei最后两位set@imei=CONVERT(@imei,SIGNED);--转为数字--SQL语句set@sql1="(mac_id,mac_type,channel,type,x,y,gpstime,bvalid,speed,dir,s1,s2,s3,s4,ins_date,imagefile,battery)SELECTmac_id,mac_type,channel,type,x,y,gpstime,bvalid,speed,dir,s1,s2,s3,s4,ins_date,imagefile,batteryFROMtrackORDERBYgpstimeDESCLIMIT";set@inset_sql=CONCAT("INSERTINTOtrack_",@imei,@sql1,i,",",1);--拼接完整的插入sql语句PREPAREinsert_trackfrom@inset_sql;--预编译EXECUTEinsert_track;--执行sql语句seti=i+1;--结束循环endwhile;commit;end--执行存储过程CALLsub_track();@flm
感谢各位的阅读!关于“sql存储过程如何实现动态根据表数据复制一个表的数据到另一个表”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。