合并评论 ------- MySql 游标存储过程

本文介绍了一种使用MySQL存储过程来合并数据的方法。通过具体示例展示了如何将一个表中的重复姓名的评价合并到另一个表中。适用于需要进行数据整合的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

book内容:

 

 

id

name

appraisal

1

max

A

2

max

B

3

kelongmao

C

4

zero

D

5

kelongmao

E

6

max

F

7

zero

G

8

kelongmao

H

9

zero

I

 

book2 内容:

 

 

id

name

appraisal

1

max

ABF

2

zero

DG

3

kelongmao

CEH

 

create table book(

   id int primary key,

  name varchar(20),

  appraisal varchar(20)

);

 

 

create table book2(

   id int primary key,

  name varchar(20),

  appraisal varchar(20)

);

 

 

insert into book values(1, 'max', 'A');

insert into book values(2, 'max', 'B');

insert into book values(3, 'kelongmao', 'C');

insert into book values(4, 'zero', 'D');

insert into book values(5, kelongmao, 'E');

insert into book values(6, 'max', 'F');

insert into book values(7, 'zero', 'G');

insert into book values(8, 'kelongmao', 'H');

insert into book values(9, 'zero', 'I');

 

 

 

用Sql实现,将book的评论合并,填写到book2表中:

 

实现方案: mysql  存储过程

测试环境: mysql   数据库

 

存储过程如下:

 

DELIMITER $$
DROP PROCEDURE IF EXISTS getUserInfo $$
CREATE PROCEDURE getUserInfo(count int) 

BEGIN
declare _id1  int;
declare _name1  varchar(20);
declare _app1  varchar(20);
declare _name2   varchar(20);
declare _app2  varchar(20);
declare _app3  varchar(20);
declare _app4  varchar(20);
 
DECLARE rs_cursor CURSOR FOR select * from book order by name; 
open rs_cursor;  
cursor_loop:loop
   FETCH rs_cursor into _id1, _name1, _app1; 
  set count = count - 1; 
   if _name2 is NULl then    
   set _name2 = _name1;
   set _app2 = _app1;
   set _app3 =  _app1 ;
   elseif  STRCMP(_name2 , _name1)<>0 then    
  insert into book2 values(_id1, _name2,  _app3);
  set _name2 = _name1;
  set _app3 =  _app1 ; 
  else                     
  set _app3 = concat(  _app1,_app3  ); 
   end if;
 if count < 1 then  
insert into book2 values(_id1, _name2,  _app3);
 end if;
end loop cursor_loop;
close rs_cursor;  
END$$
DELIMITER ;
调用存储过程如下:
call getUserInfo(9);
9 的的来:
select count(*) from book;  --获得book中的书目条数
备注:
mysql  中调用存储过程的语句: call, 而不是exec
sql中打印数据的语句:  select
赋值语句: set
执行.sql脚本:  source d:\test.sql
 
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值