免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1796 | 回复: 1
打印 上一主题 下一主题

问个mysql存储过程? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-16 09:11 |只看该作者 |倒序浏览

问个mysql存储过程的问题
有基表
T1
id     s_id      o_id        num
1        a             a            1
2        b             a            1
3        b             a            1
4        b             a            2
5        c             b            3

现想转换为
T2(列上1,2,3为num的1,2,3)1,2,3下的数据位count所得
s_id   o_id     1      2     3
a       a          1      0     0
b       a          2      1     0
c       b           0      0     1
基表T1的数据动态变化要求T2根据T1动态生成。
俺需要个动态的比方我在T1在加行数据能自动在T2生成,T1加行
6    c    b   3
T2第三行自动变成 c    b  0  0  2
T1 变成
7    c   b   4
T2变成
s_id   o_id     1        2       3     4

a        a        1        0        0     0
b        a        2        1        0     0
c        b        0        0        1     1

谢谢

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
2 [报告]
发表于 2010-08-16 09:50 |只看该作者
简单的写了下,没详细测试,也没加事务,需要的话可以自己包裹~~:wink:

  1. delimiter $
  2. drop procedure if exists group_insert$
  3. create procedure group_insert (in new_s_id varchar(10),in new_o_id varchar(10),in new_num int)
  4. begin
  5.         if (num=1)
  6.         then
  7.                 insert into T1 (`s_id`, `o_id`, `num`) values (new_s_id,new_o_id,new_num);
  8.                 insert into T2 (`s_id`, `o_id`, `1`) values (s_id,o_id,1) on duplicate key update   `1` = `1`+1 ;
  9.         end if;
  10.         if (num=2)
  11.         then
  12.                 insert into T1 (`s_id`, `o_id`, `num`) values (s_id,o_id,num);
  13.                 insert into T2 (`s_id`, `o_id`, `2`) values (s_id,o_id,1) on duplicate key update   `1` = `1`+1 ;
  14.         end if;
  15.         if (num=3)
  16.         then
  17.                 insert into T1 (`s_id`, `o_id`, `num`) values (s_id,o_id,num);
  18.                 insert into T2 (`s_id`, `o_id`, `3`) values (s_id,o_id,1) on duplicate key update   `1` = `1`+1 ;
  19.         end if;
  20. end$
  21. delimiter ;
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP