2015-04-06 25 views
0

好吧,这是我有。如何通过添加其他表中的值来更新表格?

stats 

unique_key clicks 
abcdefg  17 
coolstuf  19 

temp_stats 

unique_key clickss 
coolstuf  32 
abcdefg  7 

如何将'temp_stats'的clickss添加到'stats'中的点击并更新'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 

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

回答

1

你可以做JOINUPDATE

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

是啊,知道我是在想它。认为会有一个更简单的方法。谢谢! – MikelG

0

试试这个:

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

你并不需要一个完整的选择来连接表的更新。

测试在MySQL 5.6

Fiddle

相关问题