首页 > 数据库 >MySQL 游标遍历每一行数据做处理。

MySQL 游标遍历每一行数据做处理。

时间:2024-06-14 17:58:20浏览次数:12  
标签:遍历 SuoshuQY -- 游标 cabinet PingguiH done MySQL cur

 

delimiter $$  --分隔标记
CREATE  PROCEDURE process_test()
begin
    --声明变量
    declare SuoshuQY_p varchar(255);
    declare done int;
    declare cur cursor for SELECT SuoshuQY as SuoshuQY_p  FROM  diy_cabinet_list WHERE IsDeleted = 0;

    declare continue handler for not found set done = 1;    --游标执行完,即遍历结束。设置done的值为1
    open cur;
    read_loop: Loop
                    --如果done的值为1,即遍历结束,结束循环
                    if done = 1 then
                         leave read_loop;
                     end if;
                Fetch cur into SuoshuQY_p; --从游标中取出SuoshuQY_p
                SELECT SuoshuQY_p; --打印输出结果
        end loop read_loop; --关闭循环
    close cur;
end
end $$  --关闭分隔标记

--Demo
--校验表里 diy_cabinet_list 相同SuoshuQY下的相同PingguiH,需要在CuowuXY 显示'同一区域屏柜号重复',反之不显示内容
CREATE PROCEDURE process_data()
begin
    declare SuoshuQY_p varchar(255);
    declare done int;
    declare cur cursor for SELECT SuoshuQY as SuoshuQY_p  FROM  diy_cabinet_list WHERE IsDeleted = 0  GROUP BY  SuoshuQY HAVING COUNT(*)>1;
    declare continue handler for not found set done = 1;
    DROP TEMPORARY TABLE if EXISTS SuoshuQY_single;
    CREATE TEMPORARY TABLE SuoshuQY_single
    SELECT SuoshuQY  FROM  diy_cabinet_list WHERE IsDeleted = 0  GROUP BY  SuoshuQY HAVING COUNT(*)=1;
    update diy_cabinet_list SET CuowuXY ='' WHERE SuoshuQY in (select SuoshuQY from SuoshuQY_single);##单个区域更新
    open cur;
    read_loop: Loop
                        if done = 1 then
                         leave read_loop;
                     end if;
                Fetch cur into SuoshuQY_p;
                SELECT SuoshuQY_p;
                DROP TEMPORARY TABLE if EXISTS PingguiHs;
                CREATE TEMPORARY TABLE PingguiHs 
                SELECT PingguiH  FROM  diy_cabinet_list WHERE IsDeleted = 0  GROUP BY  PingguiH ,SuoshuQY HAVING COUNT(PingguiH)>1 AND SuoshuQY  =SuoshuQY_p;
                UPDATE diy_cabinet_list SET CuowuXY ='同一区域屏柜号重复' WHERE PingguiH IN (
                select  PingguiH from PingguiHs) and SuoshuQY = SuoshuQY_p;##多个屏柜号更新
                UPDATE diy_cabinet_list SET CuowuXY ='' WHERE PingguiH not IN (
                select  PingguiH from PingguiHs) and SuoshuQY = SuoshuQY_p;##单个屏柜号更新
        end loop read_loop;
    close cur;
    
end

 

标签:遍历,SuoshuQY,--,游标,cabinet,PingguiH,done,MySQL,cur
From: https://www.cnblogs.com/jf-ace/p/18248370

相关文章

  • Java最全知识脑图 涵盖 juc mysql git mybatis 等 面试必备
    Java初中级知识脑图面试超实用1.Git下载链接导图下载地址:https://mm.edrawsoft.cn/mobile-share/index.html?uuid=31d00742157057-src&share_type=12.JUC下载链接https://mm.edrawsoft.cn/mobile-share/index.html?uuid=6c0be457444921-src&share_type=13.JVM下载链......
  • 毕业设计课题:快餐店点餐结算系统,基于java+SSM+mysql
     一、前言介绍        快餐店点餐结算系统可以对快餐店点餐结算系统信息进行集中管理,可以真正避免传统管理的缺陷。快餐店点餐结算系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处......
  • Navicat for MySQL 11软件下载及安装教程
    NavicatforMySQL是一款强大的MySQL数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习。NavicatforMySQL基于Windows平台,为MySQL量身订作,提供类似于MySQL的用管理界面工具,此解决方案的出现,将解放PHP、J2EE等程序员以及......
  • 运维shell脚本之测试mysql密码正确与否
    shell脚本实战:测试mysql密码正确与否在迁移过程中,常有批量迁移数据库的情况,因此在割接前,需要批量测试一次割接后的数据库信息是否配置正常,故写了一个shell脚本用于测试数据库密码是否正确有误,具体步骤如下:测试前,需要测试当前服务器是否已安装mysql,可通过命令进行测试:mysq......
  • MySql 表数据的增、删、改、查
    数据表的增、删、改、查前言在学习MySql一定少不了对数据表的增、删、改、查,下面将详细讲解如何操作数据表。前面已经建好了表customer列表如下:插入数据插入数据可以使用INSERT语句,语法格式如下:INSERTINTO表名(列名1,列名2,列名3,...)VALUES(值1,值2,值3,......
  • mysql 双主(互为主从)
    ​先要确保两个数据库的数据一致1、master1上操作,修改my.cnf配置文件[mysqld]#必须唯一server_id=1#开启binlog日志log-bin=mysql-binrelay-log=relay-bin#要进行主从的数据库binlog-do-db=coin#指定自增id值从几开始auto_increment_offset=1#指定自增值的步长a......
  • LeetCode刷题之HOT100之二叉树的遍历
    2024/6/14这几天总是下雨,天气预报上面显示这个月都要持续下雨,下雨天了怎么办?我好想你,不敢打给你,我找不到原因。说着说着唱起来了哈哈!Anyway,昨天晚上打开了《涅朵奇卡一个女人的一生》,这本篇幅不长的小说我很久前就想看,还是从王小波那里知道的这本书,才开始看陀思妥耶夫斯基,......
  • mysql高级查询技巧
    常见表表达式(CommonTableExpressions,简称CTEs)描述:CTEs是SQL中的一种高级查询功能,它允许用户定义一个临时的结果集,这个结果集在执行后续的SQL语句时可以被引用,就像一个临时表一样。CTEs使得复杂的查询逻辑更加模块化和易于理解。声明和语法:WITHCTE_NameAS(SELECTc......
  • 单向链表————遍历、查找、插入结点 (基于C语言实现)
    #include<stdio.h>#include<stdbool.h>#include<stdlib.h>#include<stdbool.h>//指的是单向链表中的结点有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造链表的结点,链表中所有结点的数据类型应该是相同的typedefstructLinkedList{Dat......
  • 【Java】 探索Java中遍历文件夹的奥秘:获取文件夹内所有文件名
    >>【痕迹】QQ+微信朋友圈和聊天记录分析工具>>(1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。>>(2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。>>(3)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型对话。>>下载地......