精华内容
下载资源
问答
  • 关于mysql循环遍历和递归调用 需求背景 :有两张表,报表和部门表,现在要根据报表中的部门id在部门表里查出所属大区id,写入报表里的相关字段,这个需求用Java写递归的话很容易,但是因为我平时mysql的函数用的少,...

    关于mysql循环遍历和递归调用

    需求背景 :有两张表,报表和部门表,现在要根据报表中的部门id在部门表里查出所属大区id,写入报表里的相关字段,这个需求用Java写递归的话很容易,但是因为我平时mysql的函数用的少,这次想用mysql的自定义函数来玩玩。

    下面是简化的表关系

    -- 部门表
    CREATE TABLE `net_org` (
    `org_id`  varchar(32) NOT NULL COMMENT '部门id' ,
    `org_type`  varchar(32) NULL COMMENT '部门类别' ,
    `parent_id`  varchar(32) NULL COMMENT '上级id' ,
    PRIMARY KEY (`org_id`)
    );
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('001', '1', '-1');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('002', '2', '001');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('003', '3', '002');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('004', '2', '001');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('005', '3', '004');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('006', '1', '-1');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('007', '3', '004');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('008', '4', '007');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('009', '4', '003');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('010', '4', '005');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('011', '4', '003');
    INSERT INTO `ssm_test`.`net_org` (`org_id`, `org_type`, `parent_id`) VALUES ('012', '4', '007');
    -- 报表
    CREATE TABLE `net_cost` (
    `order_id`  varchar(32) NOT NULL COMMENT '订单id' ,
    `receive_id`  varchar(32) NULL COMMENT '出发部门' ,
    `send_id`  varchar(32) NULL COMMENT '到达部门' ,
    `area_id`  varchar(32) NULL COMMENT '大区id' ,
    PRIMARY KEY (`order_id`)
    );
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0002', '003', '005', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0003', '003', '004', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0004', '011', '007', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0005', '012', '007', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0006', '010', '007', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0007', '008', '007', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0008', '009', '007', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0009', '009', '007', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0010', '001', '008', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0011', '002', '007', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0012', '003', '009', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0013', '004', '005', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0014', '005', '003', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0015', '006', '005', '');
    INSERT INTO `ssm_test`.`net_cost` (`order_id`, `receive_id`, `send_id`, `area_id`) VALUES ('0016', '007', '010', '');
    

    报表数据
    部门表

    其中大区id是新添加的字段,部门表中 org_type是2的就是大区。我的思路是根据报表中的出发部门id,在部门表中查找对应的org_type和上级部门parent_id。然后再set进报表里。
    -- 根据部门id查出大区id
    DROP FUNCTION IF EXISTS query_pid;
    DELIMITER //;		#这个是一种声明,不加就会报错,我在百度上找了好久才找到了这个原因
    CREATE FUNCTION query_pid(oid VARCHAR(20))		#这里定义函数名,参数和返回值,可以根据实际情况改变
    RETURNS VARCHAR(20)
    BEGIN
     #暂时保存当前部门id
     DECLARE ooid VARCHAR(20);
     #当前部门的父级id
     DECLARE pid VARCHAR(20);
     #当前部门的机构类型
     DECLARE otype char(6);
     #根据当前org_id查出org_type和 parent_org_id
     SELECT org_type,parent_id,org_id INTO otype,pid,ooid FROM net_org WHERE org_id = oid;
     WHILE oid IS NOT NULL DO
      IF pid = '-1' THEN				#如果当前部门id对应的上级id是-1 ,就是当前部门已经是顶级部门 但是不属于大区 返回空字符串
       SET ooid = '';
       RETURN ooid;
      ELSEIF otype = '2' THEN 	#当前部门的类型是2,就是大区,直接返回当前部门的id
       RETURN ooid; 
      END IF;
      # 如果都不满足,就继续循环
      SELECT org_type,parent_id,org_id INTO otype,pid,ooid FROM net_org WHERE org_id = pid;
     END WHILE;
     RETURN ooid;
    END ;
    
    这是mysql的递归查询指定的上一级,我看网上都是查询所有上级,我应该是第一个写指定某一级的
    -- 创建存储过程 修改报表对应大区
    DROP PROCEDURE IF EXISTS find_tran;
    CREATE PROCEDURE find_tran()
    BEGIN
     DECLARE flag INT DEFAULT 0; #用来标识是否还有数据需遍历
     #创建临时变量存值
     DECLARE id VARCHAR(32);
     #查询出需要遍历的数据集合
     DECLARE rec_idList CURSOR FOR (-- 查询运输报表中大区id为空的所有出发部门id
    SELECT receive_id FROM net_cost WHERE area_id = '' GROUP BY receive_id);
     #查询是否有下一个数据 没有将标识设为1 相当于hasNext
     DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1;
     #打开游标
     OPEN rec_idList;
      #取值设置到临时遍历中
      FETCH rec_idList INTO id;
      #游标不等于1 就一直循环
      WHILE flag <> 1 DO 
      	#普通的update语句   
       	UPDATE net_cost 
      	SET area_id = query_pid(id)
      	WHERE
      	receive_id = id;
       #不要忘记游标往后移一位
       FETCH rec_idList INTO id;
      END WHILE;
     CLOSE rec_idList;
    END;
    
    #执行存储过程
    CALL find_tran();
    

    基本就是这样,因为平时这种逻辑操作都是直接在Java里写,所以对mysql的函数比较陌生,为了这个需求在网上看了很多博客,结合起来才写完了这个需求,所以决定写篇博客记录一下,方便将来再用到的时候忘记了的话可以再看看,也希望能帮到和我一样的初学者。

    重点: DELIMITER //; 不加这个的时候会报语法错误。

    展开全文
  • -- 当s不等于1,也就是未遍历完时,会一直循环 while s<>1 do -- 执行业务逻辑 update patrolreporthistory set reportUrl = CONCAT('patrolReport.html?monitorId=',substring(report_url,15,1),'&...
    -- 创建存储过程之前需判断该存储过程是否已存在,若存在则删除
    DROP PROCEDURE IF EXISTS init_reportUrl; 
    -- 创建存储过程
    CREATE PROCEDURE init_reportUrl()
    BEGIN
    	-- 定义变量
    	DECLARE s int DEFAULT 0;
    	DECLARE report_id varchar(255);
    	DECLARE report_url varchar(256);
    	-- 定义游标,并将sql结果集赋值到游标中
    	DECLARE report CURSOR FOR select reportId,reportUrl from patrolReportHistory;
    	-- 声明当游标遍历完后将标志变量置成某个值
    	DECLARE CONTINUE HANDLER FOR NOT FOUND SET s=1;
    	-- 打开游标
    	open report;
    		-- 将游标中的值赋值给变量,注意:变量名不要和返回的列名同名,变量顺序要和sql结果列的顺序一致
    		fetch report into report_id,report_url;
    		-- 当s不等于1,也就是未遍历完时,会一直循环
    		while s<>1 do
    			-- 执行业务逻辑
    			update patrolreporthistory set reportUrl = CONCAT('patrolReport.html?monitorId=',substring(report_url,15,1),'&reportId=',report_id) where reportId=report_id;
    			-- 将游标中的值再赋值给变量,供下次循环使用
    			fetch report into report_id,report_url;
    		-- 当s等于1时表明遍历以完成,退出循环
    		end while;
    	-- 关闭游标
    	close report;
    END;
    
    -- 执行存储过程
    call init_reportUrl()
    
    展开全文
  • SELECT USER_ID FROM ua; 会返回USER_ID的列表 2.通过循环来逐条更新符合USER_ID的记录 # delimiter $$ 告诉解释器使用$$结尾 delimiter $$ DROP PROCEDURE IF EXISTS test_update; create PROCEDURE test_update ...
    1. SELECT USER_ID FROM ua; 会返回USER_ID的列表
      USER_ID列表
      2.通过循环来逐条更新符合USER_ID的记录
    # delimiter $$ 告诉解释器使用$$结尾
    delimiter $$
    DROP PROCEDURE IF EXISTS test_update;
    create PROCEDURE test_update ()
    begin
    # 声明自定义变量
    DECLARE tempUserId BIGINT(20);
    # 声明游标结束变量
    DECLARE done INT DEFAULT 0;
    # 声明游标 cr 以及游标读取到结果集最后的处理方式
    DECLARE cur CURSOR FOR SELECT USER_ID FROM ua;
    DECLARE continue handler for not found set done = 1;
    # 打开游标
    OPEN cur;
    # 循环
      users_loop: LOOP
         # 获取游标中值并赋值给变量
         FETCH cur INTO tempUserId;
         # 判断游标是否到底,若到底则退出游标
         # 需要注意这个判断
         IF done=1 THEN
             LEAVE users_loop;
         END IF;
         # 需要执行的语句
         update tb_cpl_user_info set CHANNEL ='abc123' WHERE user_id = tempUserId;
      END LOOP users_loop;
    -- 关闭游标
    CLOSE cur;
    end$$
    # 最后重新定义为;
    delimiter ;
    
    # 执行存储过程
    call test_update;
    
    展开全文
  • Mysql游标循环遍历

    千次阅读 2017-04-30 17:14:05
    Mysql游标 循环 遍历

    在大型的数据面前修改表内的内容,使用Mysql的游标实现
    牧牛遛马
    牧牛遛马根据在存储过程的接触上实际的使用过程在代码的每个逻辑后面加上注释来大致实现一下遍历数据表的逻辑

    牧牛遛马
    踩过的雷区:

    1、记不得游标的查询单词————–fetch

    2、设置循环条件的代码写错————
    declare continue handler for not found set flag = false;
    漏写for,handler错写成handle

    3、游标查询的时候要赋值给多个变量,加逗号就可以了
    fetch liuma into lmage,lmname;
    不能理解liuma里面有多条字段信息数据错误。

    4、until 语句后面不能加逗号
    正确———–until flag = false
    错误———–until flag = false;

    5、变量在游标或者handler的后面定义报错:
    ERROR 1337 (42000): Variable or condition declaration after cursor or handler de
    claration

    Surfing the code…

    提个需求:
    更改表中的所有数据,规则如下
    {
    如果年龄大于18,名字后面加上说自己是成年人;
    如果年龄小于18,名字后面加上说自己是未成年人;
    }
    1、先来一张表
    这里便于演示,只显示了七条数据,根据实现的思想逻辑可以扩展到百万数据的更新。

    mysql> select * from emp;
    +----+--------+------+---------+
    | id | name   | age  | dept_in |
    +----+--------+------+---------+
    |  1 | 张三   |   18 |       1 |
    |  2 | 李四   |   18 |       1 |
    |  3 | 王五   |   20 |       1 |
    |  4 | 赵六   |   21 |       2 |
    |  5 | 小强   |   12 |       3 |
    |  6 | 大锤   |   12 |       3 |
    |  7 | 中申通 |   23 |       3 |
    +----+--------+------+---------+
    7 rows in set (0.00 sec)

    2、写一下游标遍历数据的代码

    mysql> delimiter $$
    mysql> create procedure muniu ()
        -> begin
        ->     declare lmage int(11);
        ->     declare lmname varchar(50);
        ->     declare flag int default true;#声明一个开关变量flag用于循环结束判断默
    认是true;
        ->     declare liuma cursor for(select age,name from emp);#申明一个游标,名
    字叫liuma,因为游标指向的表内有两个字段,需要两个变量存储,所有得申明两个变量;
        ->
        ->     declare continue handler for not found set flag = false;
        ->     open liuma;#打开游标
        ->
        ->     repeat
        ->         fetch liuma into lmage,lmname;#把游标的内容赋值到变量中。
        ->         if(lmage<18)
        ->             then update emp set name = concat(lmname,"说我是未成年人,读
    书少") where age = lmage;
        ->         elseif(lmage>18 or lmage = 18)
        ->             then update emp set name = concat(lmname,"说我是成年人,不会
    乱来")  where age = lmage;
        ->         end if;
        ->         until flag = false
        ->     end repeat;
        ->     close liuma;#关闭游标
        -> end$$
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> delimiter ;
    mysql>
    mysql>
    mysql>
    mysql> call muniu;
    Query OK, 0 rows affected (0.51 sec)
    
    mysql> select * from emp;
    +----+------------------------------+------+---------+
    | id | name                         | age  | dept_in |
    +----+------------------------------+------+---------+
    |  1 | 李四说我是成年人,不会乱来   |   18 |       1 |
    |  2 | 李四说我是成年人,不会乱来   |   18 |       1 |
    |  3 | 王五说我是成年人,不会乱来   |   20 |       1 |
    |  4 | 赵六说我是成年人,不会乱来   |   21 |       2 |
    |  5 | 大锤说我是未成年人,读书少   |   12 |       3 |
    |  6 | 大锤说我是未成年人,读书少   |   12 |       3 |
    |  7 | 中申通说我是成年人,不会乱来 |   23 |       3 |
    +----+------------------------------+------+---------+
    7 rows in set (0.00 sec)
    

    从上面的代码运行中我们发现,当age重复的时候,他们的名字会出现错误,第一条应该是张三说,可是运行出来是李四说,第5条应该是小强说,运行出来是大锤说。
    这是因为我们在查询的时候使用的是age字段,每次更新数据的时候会把age相同的一起更新,第二次把第一次覆盖导致。
    要解决这个问题,需要在游标中传入一个主键参数,然后根据主键做条件,根据age做判断就可以解决。这里就先把数据更新为不重复数据,模拟age为主键的情况进行演示一下:

    先更新一下数据

    mysql>  update emp set name = "张三" where id =1;
    Query OK, 1 row affected (0.07 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> update emp set age = 13 where id =1;
    Query OK, 1 row affected (0.07 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql>  update emp set name = "李四" where id= 2;
    Query OK, 1 row affected (0.04 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql>  update emp set name = "王五" where id= 3;
    Query OK, 1 row affected (0.05 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql>  update emp set name = "赵六" where id= 4;
    Query OK, 1 row affected (0.04 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql>  update emp set name = "小强" where id= 5;
    Query OK, 1 row affected (0.05 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql>  update emp set name = "大锤" where id= 6;
    Query OK, 1 row affected (0.04 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> update emp set age=11 where id= 6;
    Query OK, 1 row affected (0.07 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql>  update emp set name = "中申通" where id= 7;
    Query OK, 1 row affected (0.11 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from emp;
    +----+--------+------+---------+
    | id | name   | age  | dept_in |
    +----+--------+------+---------+
    |  1 | 张三   |   13 |       1 |
    |  2 | 李四   |   18 |       1 |
    |  3 | 王五   |   20 |       1 |
    |  4 | 赵六   |   21 |       2 |
    |  5 | 小强   |   12 |       3 |
    |  6 | 大锤   |   11 |       3 |
    |  7 | 中申通 |   23 |       3 |
    +----+--------+------+---------+
    7 rows in set (0.00 sec)

    再运行一下游标过程存储:

    mysql> delimiter $$
    mysql> create procedure muniu ()
        -> begin
        ->     declare lmage int(11);
        ->     declare lmname varchar(50);
        ->     declare flag int default true;
        ->     declare liuma cursor for select age,name from emp;
        ->
        ->     declare continue handler for not found set flag = false;
        ->     open liuma;
        ->     repeat
        ->           fetch liuma into lmage,lmname;
        ->     if(lmage<18)
        ->                then update emp set name = concat(lmname,"说我是未成年人,
    读书少")
        ->
        -> where age = lmage;
        ->             else
        ->                update emp set name = concat(lmname,"说我是成年人,不会乱
    来") where
        ->
        -> age = lmage;
        ->             end if;
        ->
        ->         until flag = false
        ->     end repeat;
        ->    close liuma;
        -> end$$
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> delimiter ;
    mysql>
    mysql> call muniu;
    Query OK, 0 rows affected (0.43 sec)
    
    mysql> select * from emp;
    +----+------------------------------+------+---------+
    | id | name                         | age  | dept_in |
    +----+------------------------------+------+---------+
    |  1 | 张三说我是未成年人,读书少   |   13 |       1 |
    |  2 | 李四说我是成年人,不会乱来   |   18 |       1 |
    |  3 | 王五说我是成年人,不会乱来   |   20 |       1 |
    |  4 | 赵六说我是成年人,不会乱来   |   21 |       2 |
    |  5 | 小强说我是未成年人,读书少   |   12 |       3 |
    |  6 | 大锤说我是未成年人,读书少   |   11 |       3 |
    |  7 | 中申通说我是成年人,不会乱来 |   23 |       3 |
    +----+------------------------------+------+---------+
    7 rows in set (0.00 sec)

    牧牛
    遛马

    展开全文
  • python mysql 循环遍历子节点查询

    千次阅读 2019-05-07 11:00:14
    # query all child group sql_child_all = '''select GROUPID from ( select t1.GROUPID, if(find_in_set(PARENTID, @pids) > 0, @pids := concat(@pids, ',', GROUPID), 0) as ischild from ...
  • MySQL循环遍历数据库中的表,books数据库下有 book1,book2...几个数据表,实现自动遍历,然后每个数据表执行delete from 表名 where type in ('et','md','pd'); 的操作,需要使用cursor游标吗? 在SQL Server数据库...
  • $conn=mysql_connect("localhost","root","") or die("数据库连接... $set=mysql_select_db("a1202200719",$conn)or die("数据库为空"); mysql_query("SET NAMES `GBK`"); $sql="SELECT * FROM `msg`"; $query=my
  • MySql 触发器 循环遍历

    千次阅读 2017-09-20 17:17:32
    由于在做项目的时候遇到了,需要能遍历表的触发器,但是对语法不是很熟悉,今天就在...使用游标的方法遍历—repeat untilDROP TRIGGER `saa`; CREATE TRIGGER `saa` AFTER INSERT ON `user` FOR EACH ROW begin de
  • I have a json object which has list of products under a ... I want to write a mysql function for it which reads the data from the json and iterates over it one by one and inserts the same data to pr...
  • Mysql实现for循环遍历

    万次阅读 多人点赞 2019-09-02 18:20:40
    //创建存储过程 DROP PROCEDURE IF EXISTS staff_zt_test; CREATE PROCEDURE staff_zt_test() BEGIN DECLARE flag INT DEFAULT 0;...DECLARE staffIdList CURSOR FOR (SELECT staff_id FROM ods...
  • MySQL存储过程-循环遍历查询到的结果集 1、创建存储过程 根据MySQL的语法创建存储过程,要注意的是如果循环遍历查询到的结果集,取出结果集中的数据做操作。 CREATE DEFINER=`root`@`%` PROCEDURE `alte...
  • 本中所使用的table: MySQL中的错误处理函数unsigned int mysql_errno(MYSQL *mysql)const char *mysql_error(MYSQL *mysql)说明:一个函数是返回错误号,一个返回错误信息,两者都以MYSQL*为参数,很直观。...
  • mysql游标遍历循环 插入数据

    千次阅读 2018-11-20 12:13:06
    BEGIN DECLARE no_more_record INT DEFAULT 0; DECLARE insertColumn VARCHAR(18);... DECLARE cur_record CURSOR FOR SELECT insertParam FROM testTable; DECLARE CONTINUE HANDLER FOR NOT FOUND SET ...
  • } $sql = "SELECT clientId, studentFirstName, studentLastName FROM clients WHERE (studentEmail = '$postEmail') OR (parentEmail = '$postEmail');"; if (!$result = $connection->query($sql)) { die ('There...
  • C#循环遍历mysql

    2018-09-29 15:57:00
    / MessageBox.Show("222", "大鹏提示"); string strcon = "server=bdm256830400.my3w.com;database=bdm256830400_db;uid=bdm256830400;pwd=sq901112;SslMode = none;"; ... MySqlConnection con...
  • MYSQL存储过程循环遍历插入数据

    千次阅读 2017-08-07 14:15:54
    本示例通过 while...end while 循环控制游标来实现插入表记录。 DROP PROCEDURE IF exists pro_initCategoryForTradingEntity; create procedure pro_initCategoryForTradingEntity(tradingEntityId int) begin ...
  • mysql存储过程之循环遍历查询结果集

    万次阅读 多人点赞 2019-07-31 19:37:33
    -- 当s不等于1,也就是未遍历完时,会一直循环 while s<>1 do -- 执行业务逻辑 update patrolreporthistory set reportUrl = CONCAT('patrolReport.html?monitorId=',substring(report_url,15,1),'&...
  • mysql里怎样循环遍历游标

    千次阅读 2015-04-14 17:35:58
    DECLARE c_ns CURSOR FOR SELECT NAME,sex FROM t WHERE id = v_id; DECLARE EXIT HANDLER FOR NOT FOUND SET nodata = 1;#当读到数据的最后一条时,设置变量为1 OPEN c_ns; WHILE nodata = 0 DO#判断是不是...
  • MySql数据库中存在大量的表结构,而且这些表都存在一个共同点,就是表中都有相同字段,比如id,name,city,adress,lat,lng。表中字段id,name,city,adress不允许为空,所以表中这几个字段的数据都是已经赋给实值的,...
  • MySql游标遍历的记录数不完整

    千次阅读 2016-12-07 13:56:00
    在项目中使用MySql存储过程中,使用游标遍历数据,发现定义游标的查询语句有8条记录,循环遍历的时候却只循环了一次; 查看MySql官方文档才发现,不仅到达游标结尾会有NOT FOUND condition发生,select … into …...
  • MySQL实现for循环逐个遍历

    万次阅读 多人点赞 2019-06-14 00:14:24
    MySQL实现for循环逐个遍历背景预热代码效果补充 背景 起因是一个朋友问我怎么使用原生的sql实现将含有”广东省“、”广东“的字段去掉后面的”省“字,然后有了后面这段认识 预热 SQL:结构化查询语言,包括数据定义...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,327
精华内容 10,130
关键字:

mysql循环遍历select

mysql 订阅