2014-04-23 41 views
0

我想比较来自mysql上2个类似表的实际结果和预测。比较mysql表并更新值

真正

id | data1| data2 | 

用户

id | data1| data2 | points 

排名

id | user| total points 

我要做到以下几点:

if (real.data1 = user.data1) AND (real.data2 = user.data2) 
update user set points=8 where id=1 
else if(real.data1 > user.data1) AND (real.data2 > user.data2) 
update user set points=4 where id=1 
else if (real.data1 = real.data2) AND (user.data1 = user.data2) 
update user set points=4 where id=1 
    else if (real.data1 < user.data1) AND (real.data2 < user.data2) 
    update user set points=4 where id=1 
     else 
      update user set points=0 where id=1  
    sum all values from points and update ranking table 

这可能吗?

+0

这很混乱。如果您提供一些样本数据和期望的输出,可能会有所帮助。 –

+0

例如,比赛的真正结果是home_team 2(data1) - 0(data2)客队 和我的预测(用户表)是2 - 0我赢了8分,如果我的预测是3 -0我赢了4分,如果我的预测是0 - 1或2-2,0分, – andoni

回答

0

我相信下面将为你的问题上半年工作,但我没有测试它:

UPDATE `user` u 
INNER JOIN `real` r ON (u.id = r.id) 
SET u.points = IF(r.data1 = u.data1 and r.data2 = u.data2, 
        8, 
        IF(r.data1 > u.data1 and r.data2 > u.data2, 
         4, 
         IF(r.data1 = r.data2 and u.data1 = u.data2, 
          4, 
          IF(r.data1 < u.data1 and r.data2 < u.data2, 
           4, 
           0) 
         ) 
         ) 
        ) 

MySQL docs有关IF语句,如果这没有意义。

+0

谢谢,它的工作原理! – andoni