sql存储过程实例–动态根据表数据复制一个表的数据到另一个表

这篇文章主要介绍了sql存储过程实例–动态根据表数据复制一个表的数据到另一个表的相关资料,需要的朋友可以参考下

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

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

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

— 创建一个 名为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存储过程实例–动态根据表数据复制一个表的数据到另一个表,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对钦钦技术栈网站的支持!

原文链接:http://www.bubuko.com/infodetail-2345938.html

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/25006/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年9月23日 下午12:19
下一篇 2022年9月23日 下午12:19
软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!