我有一个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
用触发器应该怎么写呢? 展开
我每次更新积分是在原来score的基础上加减一定的分数,类似update table1 set score=score+2, total=total+1,win=win+1
例如 我原来的玩家积分230 排名 9 总局数是 9 胜利局数是 4 。
这次我要更新数据库,给玩家加上2分,排名应该会变成8名,总局数10,胜利局数 5
那么问题来了:
更新积分后,在数据库里要改变其rank
用触发器应该怎么写呢? 展开
1个回答
展开全部
个人建议哈..不要随便写触发..而且你这个触发也挺麻烦的..还不如在程序里面实现..
在查询的时候加个自定义函数就行了..例如:
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)
在查询的时候加个自定义函数就行了..例如:
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语句实现我的功能需求呢?——加减积分,更新排名这样子
追答
我个人认为是不能的...你在吧更改后的数据作为条件在去改数据...这就是死循环...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询