SQL Server 动态根据表数据复制一个表的数据到另一个表的解决办法

2022-11-12 09:38:14
内容摘要
这篇文章主要为大家详细介绍了SQL Server 动态根据表数据复制一个表的数据到另一个表的简单示例,具有一定的参考价值,可以用来参考一下。 对此感兴趣的朋友,看看idc笔记做的技
文章正文

这篇文章主要为大家详细介绍了SQL Server 动态根据表数据复制一个表的数据到另一个表的简单示例,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!

动态根据表数据复制一个表的数据到另一个表

把track表的记录 根据mac_id后两位数字,复制到对应track_? 的表中

如:mac_id=12345678910,则后两位10 对应表为track_10,就把此记录复制到track_10中

创建一个 sub_track的存储过程实现:

代码如下:


-- 创建一个 名为sub_track的存储过程
CREATE PROCEDURE sub_track()
begin
  declare i int;  -- 定义 循环变量i
  set @imei =0;  -- 定义imei最后两位
  set @t_count=0; -- 定义 表有多少条记录变量
  SET i=0;
  SELECT COUNT(*)INTO @t_count FROM track;        -- 获取表的条数
while i <= @t_count do                   -- 循环
 SELECT RIGHT(mac_id,2) INTO @imei FROM track ORDER BY gpstime DESC LIMIT i, 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
            FROM track 
            ORDER BY
              gpstime DESC
            LIMIT ";
  set @inset_sql=CONCAT("INSERT INTO track_",@imei,@sql1,i,",",1);    -- 拼接完整的插入 sql语句
  PREPARE insert_track from @inset_sql;                  -- 预编译
  EXECUTE insert_track;                          -- 执行sql语句
  set i=i+1;
-- 结束循环
end while;
  commit;
end
-- 执行存储过程
CALL sub_track();
@flm

总结

以上所述是小编给大家介绍的sql存储过程实例--动态根据表数据复制一个表的数据到另一个表,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对512笔记网站的支持!

注:关于SQL Server 动态根据表数据复制一个表的数据到另一个表的简单示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!