1
我有一個簡單的過程,我試圖在單個SQL語句中執行。在compund MySQL語句中使用max和limit
我有一張桌面上的玩家(稱爲tplayers),其中有一列表示他們的用戶ID和錦標賽,以及一個「玩家點數」列。我還有一張名爲「tscores」的表格,其中包含分數,用戶標識和名爲「rankpoints」的列 - 我希望每個玩家排名最高的排名前3排,並將該值放入tplayers的相應用戶記錄中 - - 全部用於特定的錦標賽。
這裏的查詢:
update tplayers p set playerpoints=
(
select sum(b.mypoints) y from
(
select scorerankpoints as mypoints from tscores t where t.tourneyid=p.tourneyid and p.userid=t.userid and t.scorerankpoints>0 order by scorerankpoints desc limit 3
) as b
) where p.tourneyid='12'
這會產生這樣的錯誤:在未知列'p.tourneyid「where子句」
基本上,我希望利用「scorerankpoints的前3名值「從桌面tscores並將總結值放入一個名爲玩家積分的表格玩家的列中,我想爲所有玩家和在桌面上都有相同錦標賽的玩家進行此操作。
似乎p.tourneyid的內部引用是未定義的......有沒有辦法在單個語句中執行此操作,還是必須將其分解?
你會推薦,我只是把語句拆分成單獨的操作? 在我看來,這種行爲是不可預知的,所以如果我沒有在單個複合語句中做所有這些,那麼是否會有顯着的性能下降? –
@ S.ov。 。 。我非常喜歡把事情放入一個查詢中,而不是將它們分開。我認爲這種方法沒有顯着的性能影響。但是,我必須承認,從調用代碼的角度來看,做兩個單獨的查詢可能會很清楚。 –