`

Mysql存储结构多层循环的多种方式

阅读更多

1、通过Repeat方式

DELIMITER $$
DROP PROCEDURE IF EXISTS insertxxx $$
CREATE PROCEDURE insertxxx()
BEGIN
declare indexSidOut int;-- 内层循环索引936次

declare indexSidIn int;-- 外层循环索引31次
DECLARE fidC int;

DECLARE nameC VARCHAR(200);

SET indexSidIn = 1;
set indexSidOut = 5486;

REPEAT
      --   sql语句

    REPEAT-- 内层循环31次
     --   sql语句

      SET indexSidIn =  indexSidIn + 1;
    UNTIL indexSidIn > 31-- 结束的索引注意,该处不能有分号,切记切记
    END REPEAT;
  SET indexSidOut  = indexSidOut + 1;
UNTIL indexSidOut > 6421 -- 结束的索引
END REPEAT;
END $$
DELIMITER ;

2、通过while方式实现

CREATE PROCEDURE insertSql()
BEGIN
declare indexSidOut int;-- 内层循环索引936次 -- 5486--6421
declare indexSidIn int;-- 外层循环索引31次
DECLARE fidC int;-- 院士id
DECLARE nameC VARCHAR(200); -- 院士姓名

SET indexSidIn = 1;
set indexSidOut = 5486;

WHILE indexSidIn < 6422 DO
  select fid , Word INTO fidC , nameC from words where Id =

indexSidOut;-- into 前后逗号分隔,我晕
    WHILE indexSidIn < 32 DO-- 内层循环31次
     insert into words(Sid , Fid , Word)

VALUES(indexSidIn , fidC , nameC);
    END WHILE;
END WHILE;
END;

3、通过游标实现

CREATE PROCEDURE INSERToTomMutil()
BEGIN
-- 需要定义接收游标数据的变量
  DECLARE _fid int;
  DECLARE _word VARCHAR(200);
 DECLARE _site_id VARCHAR(200);
  -- 遍历数据结束标志
  DECLARE done INT DEFAULT FALSE;
 -- 游标words
  DECLARE cur_words CURSOR FOR -- sql;

BETWEEN 5000109 and 50900504;
 -- 游标site
  DECLARE cur_site CURSOR FOR --sql;
  -- 将结束标志绑定到游标--注意只能存在一个
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  -- 打开游标
  OPEN cur_words;
  -- 开始循环
  read_loop_words: LOOP
    -- 提取游标里的数据,这里只有一个,多个的话也一样;
    FETCH cur_words INTO _fid , _word;
    -- 声明结束的时候
    IF done THEN
      LEAVE read_loop_words;
    END IF;
    -- 打开游标
    OPEN cur_site;
    -- 这里做你想做的循环的事
     read_loop_site: LOOP
    -- 提取游标里的数据

    FETCH cur_site INTO _site_id;
    
    -- 声明结束的时候
    IF done THEN
     LEAVE read_loop_site;
    END IF;
    -- 这里做你想做的循环的事
    INSERT INTO wordass(fid , word , sid )

values(_fid , _word , _site_id );
    END LOOP;
    SET done = 0;-- 重新进入外层循环,注意点
    -- 关闭游标
    CLOSE cur_site;
  END LOOP;
  -- 关闭游标
  CLOSE cur_words;

END

 

分享到:
评论

相关推荐

    MySQL实现递归查询的三种方式.rar

    MySQL数据库在处理涉及层次结构或递归的数据时,提供了多种方法。本压缩包中的内容主要介绍了三种实现递归查询的方法,适用于不同的需求和环境。以下是这三种方式的详细说明: ### 方式一:使用自定义函数实现 在...

    java实现多层嵌套循环参数转换

    在Java编程中,多层嵌套循环是一种常见的数据处理方式,尤其在处理具有层次关系的数据时,例如构建或解析父子级结构。在这种场景下,我们可能需要遍历多个层级的数据,以便进行转换、操作或者存储到数据库中。下面将...

    MYSQL常用函数及解决方案(持续更新)

    八、MYSQL存储过程内循环; 九、创建MYSQL事件(每天/每时/每分); 十、MYSQL行转列; 十一、设置/取消唯一索引; 十二、MYSQL事件失效; 十三、解决MYSQL表被锁住的问题; 十四、MYSQL日期函数大全; 十五、终止...

    PHP和MySQL Web开发第4版pdf以及源码

    2.10 更好的方式:数据库管理系统 2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的...

    MySQL中Nested-Loop Join算法小结

    MySQL中的Nested-Loop Join(NLJ)是一种基本的JOIN操作实现方式,主要用于处理两个或多个表之间的连接。NLJ的基本思想是逐行遍历一张表(称为外部表),然后对每一行与另一张表(称为内部表)进行匹配。这个过程...

    PHP和MySQL WEB开发(第4版)

    2.10 更好的方式:数据库管理系统 2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的初始化 ...

    计算机二级MySQL考试经典强化练习及答案.docx

    计算机二级MySQL考试经典强化练习及答案涵盖了多个计算机科学的基础知识点,包括数据结构、数组、存储类型、编程语言概念以及数据库管理系统的相关内容。虽然题目没有直接涉及MySQL的具体操作,但我们可以从这些问题...

    PHP和MySQL Web开发第4版

    2.10 更好的方式:数据库管理系统 2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的...

    2021-2022计算机二级等级考试试题及答案No.18404.docx

    - 逻辑数据结构可以有多种存储结构,且不同的存储结构可能影响数据处理效率。 12. 封装: - 数据封装是面向对象编程的基本原则,它将数据和操作这些数据的方法打包在一个实体(类)中。 13. 微机硬件核心: - ...

    MSserver自关联表的级联删除

    在SQL Server中,自关联表是指一个表中的某一列引用了该表的主键作为外键,形成一种树形结构,常用于表示层次关系的数据,如组织架构、目录树等。在这样的表中,级联删除是确保数据完整性的一个重要功能,即删除某条...

    MySQL数据库定时自动备份bat和定时清除5天前的备份bat

    通过这种方式,你可以轻松实现MySQL数据库的自动备份和旧备份的清理,从而保证数据安全并有效管理磁盘空间。不过,务必注意,定期检查备份的有效性和完整性,以防止因意外情况导致的数据丢失。同时,对于重要数据,...

    JDK1.5,J2EE1.3,Struts,MySql,JavaScript帮助文件(CHM)

    MySQL 5.x版本(可能与JDK1.5和J2EE1.3配套使用)提供了事务处理、存储过程、触发器、视图等功能,适合于开发大型Web应用。 **JavaScript**:JavaScript是一种轻量级的解释型编程语言,主要用于Web浏览器中的客户端...

    基于JavaEE的网上拍卖系统_JSP网站设计_MySQL数据库设计.rar

    总结,基于JavaEE的网上拍卖系统融合了JSP的动态网页特性、MySQL的稳定数据存储能力,以及MVC设计模式的结构化思维。通过合理的设计与开发,可以构建出一个功能完善、用户体验良好的网上拍卖平台,满足商业需求的...

    使用递归循环读取省市区json文件数据,并保存到数据库中

    在IT行业中,数据存储与管理是一项基础且重要的任务...综上所述,这个任务涉及到将JSON数据结构化处理,并利用递归方法逐级读取,最后将这些数据持久化存储到数据库中。这既锻炼了编程技巧,也加深了对数据操作的理解。

    基于python循环神经网络的情感分类系统源码数据库.zip

    而"数据库"可能指的是存储和管理文本数据的结构,如MySQL、MongoDB或SQLite,用于数据预处理和模型训练阶段的数据输入。 作为毕业设计,这个项目可以帮助学生了解并实践自然语言处理(NLP)、深度学习和Python编程...

    2021-2022计算机二级等级考试试题及答案No.1037.docx

    3. `Break`语句的使用:`Break`语句主要用于中断最接近的循环语句,如`for`或`while`循环,不会跳出多重循环。选项B是正确的。 4. Access关闭方法:Access的正确关闭方式包括选择"文件"菜单的"退出"命令,使用Alt+...

    2021-2022计算机二级等级考试试题及答案No.14469.docx

    - 宏可以通过多种方式执行,其中最直接的方式是通过“运行宏”的命令。 - 其他选项(编辑宏、创建宏、带条件宏)涉及到宏的创建和编辑,而不是执行宏本身。 **结论:** 正确答案是D(运行宏)。 ### 19. 计算机的...

    MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)

    在上面的代码中,我们使用数组来存储斐波那契数列的每一项值,然后使用循环来计算出正确的值。 MyBatis之自查询 在MyBatis中,我们可以使用自查询来实现 N级联动效果。自查询是一种特殊的查询方式,它可以调用自身...

    工资管理系统源代码

    这通过循环结构和条件判断实现,提高了系统的健壮性和用户友好性。 #### 信息录入与保存 信息录入部分,如`jiaoshiluru()`、`Leaderluru()`和`jianzhiluru()`函数,允许用户输入多个员工的信息,并询问是否确认保存...

Global site tag (gtag.js) - Google Analytics