mysql - 比较 mysql 表并更新值

标签 mysql function compare

我想比较 mysql 上 2 个类似表的实际结果和预测。

真实

 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

可能吗?

最佳答案

我相信以下内容适用于您问题的前半部分,但我尚未对其进行测试:

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 语句。

关于mysql - 比较 mysql 表并更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23252012/

相关文章:

C const 返回类型函数

javascript - 稍后更改 javascript obj 的属性

php - 比较 double 的奇怪行为,两个 PHP double 值不相等

objective-c - 检查 CMTime 等于

mysql - 如何在mysql函数中使用delete语句

php - 空查询验证的更好实践

javascript - 我不知道这段代码是什么

c - 未调用 qsort 比较函数?

php - 乘法运算符会导致SQL注入(inject)吗?

php - 如何使用 PHP 和 MySQL 从出生日期获取年龄?