我有一个表格,我们称之为'销售'有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”之外是否可行,对于数量列也是如此。我有很多行要更新,如果你能想象,单独增加值是非常耗时的。感谢您提供任何帮助或建议!
答案 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>