2013-11-20 73 views
1

我有兩個表,一個名爲scores,另一個名爲dem0n123使值等於平均值​​

我試圖採取一切在demon123表的部分kills的AVG,並插入值到AverageKills部分的scores但只有其中的scoresPlayer部分等於dem0n123

我已經嘗試了許多不同的方法,並且還沒有找到任何可行的方法。

*編輯*

更好的解釋,有兩個表: -scores -dem0n123

內的分數也有個別球員還有平均成績(平均擊殺/死亡/助攻.. 。等)

內dem0n123有遊戲分數(殺死/死亡/次助攻...等)

所以從dem0服用N123表,我需要他的所有殺害的平均值,然後將該值插入分數表「AverageKills」值

希望這是一個更好的解釋

+0

帖子你試了一下,並解釋它是如何不工作。此外,張貼表中的列。 – zimdanen

+0

'demon123'或'dem0n123'? – Barmar

+0

只有在分數的玩家部分等於dem0n123'的情況下,你是什麼意思? 'dem0n123'是一個表格,一個'Player'怎麼能等於一個整個表格呢? – Barmar

回答

3

如果我猜你正確的意思,我想你想要這樣的:

UPDATE scores AS s 
JOIN (SELECT Player, AVG(kills) AS avkills 
     FROM dem0n123 
     GROUP BY Player) AS d 
ON s.Player = d.Player 
SET s.AverageKills = d.avkills 

DEMO

+0

我不完全確定這是如何工作的?... s和d是什麼意思?什麼是avkills?它應該是我的「AverageKills」還是完全不同的......而「Player」和「Kills」在單獨的表格中,這會影響任何東西嗎? – moveit124

+0

它說'AVG(殺死)avkills'你將avg字段殺死(殺死)到avkills的名字。它說'更新分數s',你將分數表別名爲s。然後'加入(選擇......)d'你正在將整個連接別名爲d。試着想一想,它其實是一個相當簡單的查詢。現在,在運行此查詢後,您需要運行另一個查詢以將記錄插入表中不存在的地方。 –

+0

@ user3014598我已經添加了'AS'關鍵字,也許這會使它更容易識別。在MySQL中,這些關鍵字是可選的,我通常不會使用它們,儘管我可能應該在SO答案中更詳細。除此之外,這是基本的,初學者的SQL語法。 – Barmar

0

您需要在列執行功能。你想要的功能是AVG。例如

Select AVG(kills) from scores 

然後在那之後,您將要插入到其他表中。

insert into dem0n123(average) 
    select AVG(kills) from scores 
+0

This works,sort of ...唯一的問題是它使一個全新的行,而不是插入它在哪裏播放器='dem0n123' – moveit124