Mysql查询数据,并且分表再插入数据,储存过程源码解析

26,382次阅读
没有评论

共计 2074 个字符,预计需要花费 6 分钟才能阅读完成。

Mysql 查询数据,并且再分表插入数据

直接上代码:有用请支持一下:

drop procedure if exists insertt;
delimiter $$ 
create procedure insertt()
begin
	declare a int default 1000;
	declare flag int default 0;
	declare article_id int(10);
	declare s_list cursor for SELECT `id` as "article_id" FROM `div_article` ORDER BY `id` ASC LIMIT 0,1; 
	declare continue handler for not found set flag=1;
	open s_list;
		 fetch s_list into article_id;
		 while flag  1 do
				set @tid = article_id%1000;
				set @tname = CONCAT('`div_test',@tid,'`');
				set @article_id = article_id;
				set @title = (SELECT title FROM `div_article` WHERE id = @article_id) ;
				
				set @sqlStr= CONCAT('INSERT INTO',@tname,'(`id`,`title`)  VALUES (',@article_id,',"',@title,'")');
				PREPARE stmt from @sqlStr;
				EXECUTE stmt;
				
				fetch s_list into article_id;
			end while;
	close s_list;
end$$
delimiter;
call insertt();

示例二

以下是一个 MySQL 存储过程的示例,该存储过程查询数据并将其分表插入到其他表中:、

DELIMITER //
CREATE PROCEDURE insert_data_to_partition()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE employee_name VARCHAR(255);
    DECLARE employee_age INT;
    DECLARE cur CURSOR FOR SELECT name, age FROM employees;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    OPEN cur;
    read_loop: LOOP
        FETCH cur INTO employee_name, employee_age;
        
        IF done THEN
            LEAVE read_loop;
        END IF;
        -- 根据年龄范围选择要插入的目标表
        IF employee_age = 25 AND employee_age 

这个示例存储过程首先声明了一些变量用于迭代查询结果集,并设置了一个游标(`cur`)来执行查询操作。然后,使用 `OPEN` 语句打开游标,准备从 `employees` 表中检索数据。

`FETCH` 语句在每次循环迭代中获取下一行数据,并将它们存储到声明的变量中(`employee_name` 和 `employee_age`)。如果没有更多的数据可获取,则设置 `done` 变量为 `TRUE` 并跳出循环。

根据员工的年龄范围,使用条件语句选择要插入数据的目标表。根据示例,将年龄小于 25 岁的员工插入到 `employees_25` 表中,将年龄在 25 到 40 岁之间的员工插入到 `employees_40` 表中,将年龄大于等于 40 岁的员工插入到 `employees_40plus` 表中。

最后,关闭游标并结束存储过程定义。

要执行这个存储过程,您可以使用以下 SQL 语句:

CALL insert_data_to_partition();

请注意,这只是一个示例存储过程,您可能需要根据自己的实际需求进行适当的修改和调整。

文章来源地址 https://www.toymoban.com/diary/sql/220.html

到此这篇关于 Mysql 查询数据,并且分表再插入数据,储存过程源码解析的文章就介绍到这了, 更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持 TOY 模板网!

原文地址:https://www.toymoban.com/diary/sql/220.html

如若转载,请注明出处:如若内容造成侵权 / 违法违规 / 事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于1970-01-01发表,共计2074字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)