user表:
用户ID  用户分数
  uid     numgame表:
ID   用户一  用户一ID    用户二   用户二ID  比赛分数   开始时间   结束时间
id    user1    uid1      user2      uid2    gamenum   begintime   endtime
想实现的效果是,将game表中的所有到期的记录,根据game表的uid1和uid2对应相同的user表中的uid对用户一和二的分数的num进行比较,num大的则胜,将game表中预先设定的比赛分数gamenum加给胜者的num上,反之则负,将减去这一gamenum分数,其中,负者的num分数未必超过gamenum分数,如果超过则相应减去,如不超过,刚减光为零.

解决方案 »

  1.   

    dreamover(梦醒了〖http://hellfire.cn〗) 老兄,为什么要重新设置,是我这个设计不合理还是设计好后有更简单的方法,请指教,当然,如果将两个表合成一个那是不可以的,最好是别更改.我这库比较复杂.这是提出来一部分.
      

  2.   

    看不懂你的算法
    user表中的num好像应该是个历史分数,但你判定胜负的时候却也用这个num来,不懂
      

  3.   

    觉得dreamover说的有道理,你的数据库表结构看上去需要改善,是否需要在user表中添加一个记录用户总成绩的字段。
      

  4.   

    假如再不添加字段的基础上,可以不用一句纯SQL,可以加一些语句判断能否实现呢,比如:
    if(user1num>user2num)
    {update u set u.num+g.gamenum  from user u,game g where datediff(now(),endtime)<0}
    else
    {update u set u.num-g.gamenum  from user u,game g where u.num>g.gamenum}我写的语法不对,只是表达意思.求正解: