sql存储过程实例--动态根据表数据复制一个表的数据到另一个表
动态根据表数据复制一个表的数据到另一个表
把track表的记录根据mac_id后两位数字,复制到对应track_?的表中
如:mac_id=12345678910,则后两位10对应表为track_10,就把此记录复制到track_10中
创建一个sub_track的存储过程实现:
--创建一个名为sub_track的存储过程
CREATEPROCEDUREsub_track()
begin
declareiint;--定义循环变量i
set@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
)
SELECT
mac_id,mac_type,channel,type,x,y,gpstime,bvalid,speed,dir,s1,s2,s3,s4,ins_date,imagefile,battery
FROMtrack
ORDERBY
gpstimeDESC
LIMIT";
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存储过程实例--动态根据表数据复制一个表的数据到另一个表,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!