首页 新闻 会员 周边

mysql存储过程中处理多条数据

0
悬赏园豆:100 [已解决问题] 解决于 2014-12-03 15:35
我有两个表,a和b。
a是详细数据,b是统计数据。
现在a中有一个字段Hero,每条数据可能都不一样。
我要写一个存储过程,调用的时候把a中指定ID的Hero的值的统计数据的前三名放到b中的三个字段fav1,fav2,fav3。如果筛选出来的结果小于3个,多余位置就填0。
下面是我写的,已经能够成功筛选出结果,但是我不知道怎么写到另外一个表里
SELECT Hero , COUNT(Hero) FROM a WHERE ID = vID GROUP BY Hero ORDER BY COUNT(Hero) DESC;
武装三藏的主页 武装三藏 | 初学一级 | 园豆:114
提问于:2014-12-03 13:10
< >
分享
最佳答案
2

1、弱水三千只取一瓢

SELECT Hero , COUNT(Hero) FROM a WHERE ID = vID GROUP BY Hero ORDER BY COUNT(Hero) DESC LIMIT 3

2、使用游标Cursor,取出三个统计数据

3、放到B表相应字段中。(这个你没有写清楚,没有办法指点)

收获园豆:100
爱编程的大叔 | 高人七级 |园豆:30839 | 2014-12-03 14:24

能把第二步写详细一点么?现在我就是不知道如何从第一步中取出结果。第三步只要有3个变量我就可以搞定。

武装三藏 | 园豆:114 (初学一级) | 2014-12-03 14:36

@武装三藏: 自个儿研究吧,就三行数据,怎么都能取出来。

mysql cursor游标的使用,实例

 

伪代码如下:

declare iRow int

set iRow=0

for each row in table

  set iRow=iRow+1

  if iRow=1 then do something

  if iRow=2 then do something

  if iRow=3 then do something

next 

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-12-03 14:39

@爱编程的大叔: 感谢大侠,自己查了下游标,也知道了新知识。游标就是解决我整个问题的关键,你要不写Cursor这个单词,我都不知道怎么搜

武装三藏 | 园豆:114 (初学一级) | 2014-12-03 15:26
其他回答(1)
0

难道不能insert into

幻天芒 | 园豆:37175 (高人七级) | 2014-12-03 15:12

哈哈,u can u up

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2014-12-03 15:27

@爱编程的大叔: 额,U will down if I can!

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2014-12-03 17:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册