2013-04-24 125 views
0

我試圖根據其他問題找到這個答案,但我無法將邏輯落實到我的必要性中。用結果集更新人物死亡和死亡

我可以很容易地得到我需要的信息,但是我無法用這些信息更新表格。

我曾嘗試使用下面的查詢選擇了所有必要的值:

select `roleid`, 
(select count(`killerid`) from `kills` where `killerid`=`roleid`) as `kills`, 
(select count(`corpseid`) from `kills` where `corpseid`=`roleid`) as `deaths` 
from `characters` 

所以這個查詢與其相應的死亡和死亡數返回字符的ID。

現在,我需要知道:如何更新表「字符」,將行「kill」和「deaths」設置爲查詢中的返回值?

謝謝你的時間。

+0

你想獲得殺死數量和死亡數額,然後把它放回數據庫?您是否要在更新前更改金額?你在用什麼?庫MySQLi? PDO? – Dan 2013-04-24 20:55:34

回答

1
UPDATE characters c 
    LEFT JOIN 
    (SELECT killerid, count(*) as kill_num FROM kills GROUP BY killerid) k1 
    ON c.roleid = k1.killerID 
    LEFT JOIN 
    (SELECT corpseid, count(*) as death_num FROM kills GROUP BY corpseid) k2 
    ON c.roleid = k2.corpseID 
SET c.kills = k1.kill_num, c.deaths = k2.death_num 
+0

非常好。先生,謝謝你。這是我第一次使用這個網站,而且我還在學習數據庫編程。由於這個原因,我不能「讚許」 - 或者本網站的任何內容 - 您的答案。 我注意到了一些事情:第一次使用查詢時,所有的字符都被更新了,但是第二次運行(在xD之後大約10秒)更新了0行。所以我猜測它不會改變相等的行數。那是對的嗎? – 2013-04-25 00:39:48

+0

它顯示實際更改的行數。在殺死表沒有改變之後,再次運行相同的更新後沒有做出改變。 – piotrm 2013-04-25 02:02:54