MYSQL根据所有其他列

时间:2016-02-23 10:05:45

标签: mysql sql-update

这是数据库数据。

Name   id  Col1  Col2  Col3 Col4 Total  Balance
Row1   1    6     1     A     Z     7       7
Row2   2    2     3     B     Z     8       1
Row3   3    9     5     B     Y     7       2
Row4   4    16    8     C     Y     7       3

只有第一行的总数是准确的。我想更新专栏" Total"和"平衡"条件从Row2到Row4。

这是总列总和的逻辑:

update Total = Col1+Col2 if Col3 = A and Col4 <>Z
OR 
Total = Col1-Col2 if Col3 = B and Col4 <>Z
OR 
Total = Col1*Col2 if Col3 = C and Col4 <>Z

并且还更新余额,余额=以前的余额+当前总额

1 个答案:

答案 0 :(得分:1)

您的逻辑被重写为有效查询:

UPDATE tbl SET total = 
  IF(Col3 = 'A' and Col4 <> 'Z', Col1 + Col2,
  IF(Col3 = 'B' and Col4 <> 'Z', Col1 - Col2,
  IF(Col3 = 'C' and Col4 <> 'Z', Col1 * Col2, total))),
  balance = balance + total;

你没有写下当没有满足这些条件时应该发生什么,所以在这种情况下我将总数保留在之前的值上,但它仍然被添加到余额中。