MYSQL - 如何使用另一行中的值增加一行中的字段

时间:2013-06-24 16:09:58

标签: mysql increment

我有一个表格,我们称之为'销售'有4行:uid,日期,数量和金额。我想使用该表中不同行的计数/金额值来增加一行的计数和金额值。例如:

UID | Date       | Count | Amount|
1   | 2013-06-20 | 1     | 500   |
2   | 2013-06-24 | 2     | 1000  |

理想的结果是uid 2的计数/金额值增加uid 1的值:

UID | Date       | Count | Amount|
1   | 2013-06-20 | 1     | 500   |
2   | 2013-06-24 | 3     | 1500  |

请注意,我公司的数据库是MYSQL(3.something)的旧版本,因此无法进行子查询。我很想知道在执行“更新销售额计数=计数+ 1”之外是否可行,对于数量列也是如此。我有很多行要更新,如果你能想象,单独增加值是非常耗时的。感谢您提供任何帮助或建议!

2 个答案:

答案 0 :(得分:2)

如果不使用子选择,您可以进行加入。从您的描述中不确定您将哪些列链接到彼此以确定要更新哪些列,但以下内容可能会为您提供想法

UPDATE Sales a
INNER JOIN Sales b
ON ..........
SET a.Count = a.Count + b.Count,
a.Amount = a.Amount + b.Amount

但是不确定这是否适用于MySQL的古老版本

如果您只是根据第1行中的值更新第2行,那么以下内容应该

UPDATE Sales a
INNER JOIN Sales b
ON a.uid = 2 AND b.uid = 1
SET a.Count = a.Count + b.Count,
a.Amount = a.Amount + b.Amount

答案 1 :(得分:1)

大多数情况下,子查询可以重写为join ...甚至MySQL 3.23也有multiple table UPDATE

这样的东西可能会成功...但是我无法测试它(因为你唯一一个仍在使用这样一个旧版本的MySQL;)

UPDATE Sales AS S1, Sales AS S2
    SET S1.`count` = S1.`count̀ +S2.`count`, S1.Amount = S1.Amount + S2.Amount
    WHERE S1.uid = 2 AND S2.uid = 1

为简单起见,我明确将S1.uid设置为“2”,将S2.uid设置为“1” - 如果适用于此行,则应该能够使用符合您特定需求的WHERE子句。 / p>