2015-05-03 34 views
0

我有兩個表增益和final_gains。如何使用兩個表來更新數據

我在想如何計算兩列的總和並將其插入到不同的表中......我需要使用WHERE子句,它將位於增益表內的runescape_name內部。

像這樣

hitpoints_end_exp - hitpoints_starting_exp, 
magic_end_exp - magic_starting_exp, 
range_end_exp - range_starting_exp 

並將結果插入到final_gains.hp_gainedfinal_gains.magic_gainsfinal_gains.range_gained

這裏是我的兩個表

收益

+------------------------+-------------+------+-----+---------+-------+ 
| Field     | Type  | Null | Key | Default | Extra | 
+------------------------+-------------+------+-----+---------+-------+ 
| runescape_name   | varchar(12) | NO | PRI | NULL |  | 
| hitpoints_starting_exp | int(50)  | NO |  | NULL |  | 
| magic_starting_exp  | int(50)  | NO |  | NULL |  | 
| range_starting_exp  | int(50)  | NO |  | NULL |  | 
| hitpoints_end_exp  | int(50)  | NO |  | NULL |  | 
| magic_end_exp   | int(50)  | NO |  | NULL |  | 
| range_end_exp   | int(50)  | NO |  | NULL |  | 
+------------------------+-------------+------+-----+---------+-------+ 

final_gains

+----------------+-------------+------+-----+---------+-------+ 
| Field   | Type  | Null | Key | Default | Extra | 
+----------------+-------------+------+-----+---------+-------+ 
| runescape_name | varchar(12) | NO | PRI | NULL |  | 
| hp_gained  | int(50)  | NO |  | NULL |  | 
| magic_gained | int(50)  | NO |  | NULL |  | 
| range_gained | int(50)  | NO |  | NULL |  | 
+----------------+-------------+------+-----+---------+-------+ 
4 rows in set (0.00 sec) 

很抱歉,如果我不清楚,試圖解釋最好的,因爲我可以,我希望我足夠清晰的

+0

樣本數據和期望的結果是解釋您真正想要做什麼的好方法。 –

+0

我想這涉及到我的頭上的第一個查詢是這樣的: SELECT runescape_name,hitpoints_end_exp-hitpoints_starting_exp,magic_end_exp-magic_starting_exp,range_end_exp-range_starting_exp的差異 ,但我不知道該怎樣插入結果到final_gains表 – user3948234

回答

1

使用INSERT,SELECT是這樣的:

INSERT INTO final_gains (runescape_name, hp_gained, magic_gains, range_gained) 
SELECT runescape_name, 
     hitpoints_end_exp - hitpoints_starting_exp, 
     magic_end_exp - magic_starting_exp, 
     range_end_exp - range_starting_exp 
    FROM gains; 

爲了避免重複鍵:

INSERT INTO final_gains (runescape_name, hp_gained, magic_gains, range_gained) 
SELECT runescape_name, 
     hitpoints_end_exp - hitpoints_starting_exp, 
     magic_end_exp - magic_starting_exp, 
     range_end_exp - range_starting_exp 
    FROM gains 
    ON DUPLICATE KEY 
UPDATE hp_gained = hitpoints_end_exp - hitpoints_starting_exp, 
     magic_gains = magic_end_exp - magic_starting_exp, 
     range_gained = range_end_exp - range_starting_exp; 

這是未經測試的代碼,但應該接近。

注意:我刪除了第一個建議,因爲它不適用於這些表定義。 runescape_name是表final_gains中的主鍵,所以它也必須被插入/分配。

+0

想法你是對的,可能它太混亂了......我會刪除它;感謝提示:) – Trinimon

相關問題