2015-04-06 23 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

相關問題