我有一个mysql数据表,包括 playerId,score,rank,total,win分别表示id,积分,排名,总局数,胜利局数。

我有一个mysql数据表,包括playerId,score,rank,total,win分别表示id,积分,排名,总局数,胜利局数。我每次更新积分是在原来score的基础... 我有一个mysql数据表,包括 playerId,score,rank,total,win分别表示id,积分,排名,总局数,胜利局数。
我每次更新积分是在原来score的基础上加减一定的分数,类似update table1 set score=score+2, total=total+1,win=win+1
例如 我原来的玩家积分230 排名 9 总局数是 9 胜利局数是 4 。
这次我要更新数据库,给玩家加上2分,排名应该会变成8名,总局数10,胜利局数 5
那么问题来了:
更新积分后,在数据库里要改变其rank
用触发器应该怎么写呢?
展开
 我来答
聚合智创
推荐于2016-07-19 · TA获得超过303个赞
知道小有建树答主
回答量:518
采纳率:80%
帮助的人:251万
展开全部
个人建议哈..不要随便写触发..而且你这个触发也挺麻烦的..还不如在程序里面实现..

在查询的时候加个自定义函数就行了..例如:
mysql> select * from test;
+------+--------+------+
| id | number | name |
+------+--------+------+
| 1 | 20 | zz |
| 2 | 10 | yy |
| 3 | 90 | xx |
+------+--------+------+
3 rows in set (0.00 sec)

mysql> set @counter=0;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @counter:=@counter+1 AS Rank,name,number,id from test order by number;
+------+------+--------+------+
| Rank | name | number | id |
+------+------+--------+------+
| 1 | yy | 10 | 2 |
| 2 | zz | 20 | 1 |
| 3 | xx | 90 | 3 |
+------+------+--------+------+
3 rows in set (0.00 sec)
追问
感谢你的回答,请问一下可否用一个sql语句实现我的功能需求呢?——加减积分,更新排名这样子
追答
我个人认为是不能的...你在吧更改后的数据作为条件在去改数据...这就是死循环...
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式