mysql 存储过程(更新/插入数据)

BEGIN
  DECLARE sid INT(10) DEFAULT  0;
  DECLARE money INT(10) DEFAULT  0;
  DECLARE row_count INT;
  DECLARE done INT DEFAULT FALSE;#默认游标读出有记录
  DECLARE cur_order CURSOR  for  
    SELECT m.id,sum(o.price) money from ims_bj_shopn_order as o LEFT JOIN ims_bj_shopn_member as m on o.uid=m.id where o.status in ('1','2','3','6','7') and (m.isadmin=1 or m.id=m.staffid) and o.createtime BETWEEN 1514736000 and 1546271999  GROUP BY o.uid ORDER BY money desc;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;-- 绑定控制变量到游标,游标循环结束自动转true
  #select cur_order;
    open cur_order;-- 打开游标
    myLoop:LOOP -- 开始循环体,myLoop为自定义循环名,结束循环时用到
        FETCH cur_order INTO sid,money; -- 将游标当前读取行的数据顺序赋予自定义变量
        IF done THEN -- 判断是否继续循环
                    LEAVE myLoop; -- 结束循环
                END IF;
                -- 自己要做的事情,在 sql 中直接使用自定义变量即可
                SELECT count(*) INTO row_count from think_purchase_amount where sellerid=sid;
                IF (row_count=0) THEN
                    INSERT INTO think_purchase_amount(sellerid,count,year) VALUES(sid,money,2018);  
             ELSE
                    UPDATE think_purchase_amount  SET  count=count+money,year=2018 WHERE sellerid=sid;
                END IF;
    END LOOP myLoop;-- 结束自定义循环体
  CLOSE cur_order;-- 关闭游标
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值