如何通过添加另一个表中的值来更新表?

时间:2015-04-06 21:52:28

标签: mysql

好的,这就是我所拥有的。

stats

unique_key   clicks
abcdefg      17
coolstuf     19

temp_stats

unique_key   clickss
coolstuf     32
abcdefg      7

如何将“temp_stats”中的点击添加到“统计信息”中的点击次数并更新“统计信息”中的点击次数?

更新后统计信息会如下所示......

stats

unique_key   clicks
abcdefg      24
coolstuf     51

现在我已经设法通过以下查询找出如何执行此操作...

UPDATE stats, (SELECT unique_key, NEW FROM (
  SELECT *, (clicks + clickss) AS NEW FROM (
    SELECT stats.unique_key, stats.clicks, temp_stats.clickss
    FROM stats
    JOIN temp_stats
    ON stats.unique_key=temp_stats.unique_key
  ) AS TEMP1 ) AS TEMP2) AS TEMP3
SET clicks=NEW
WHERE stats.unique_key=TEMP3.unique_key

然而,它看起来像一个查询的混乱,我从内到外构建它。是否有更好,更有效/更优雅的方式来实现同样的目标?

2 个答案:

答案 0 :(得分:1)

您可以在JOIN上执行UPDATE

UPDATE stats JOIN temp_stats ON stats.unique_key = temp_stats.unique_key
    SET stats.clicks = stats.clicks + temp_stats.clicks;

答案 1 :(得分:0)

试试这个:

UPDATE stats
INNER JOIN temp_stats ON stats.unique_Key=temp_stats.unique_Key
SET clicks = clicks + clicks

您无需完全选择连接表进行更新。

在MySQL 5.6上测试

Fiddle