我正嘗試使用基於我已存儲在另一個表中的數據的'if'語句更新我的表,名爲user_results。一些背景:用戶正在做他們的每週選秀(比賽1,比賽2等),我想匹配結果與看看是否應該獎勵點數。如果他們拿到了選秀權,他們下注的積分將被獎勵(積分1,積分2等),並且所有積分將在第1周的user_results表中更新。使用if語句更新sql表格
這裏是week1_picks表的例子:
username game1 points1 game2 points2
jake25 New England Patriots 4 Green Bay Packers 5
test24 Pittsburgh Steelers 1 Chicago Bears 1
這裏的nfl_schedule表的樣子:
game away home winner
1 Pittsburgh Steelers New England Patriots New England Patriots
2 Green Bay Packers Chicago Bears Green Bay Packers
要儘量和它的測試部分剛剛得到的東西的工作,我試試這個:
update user_results
if user_week1_picks.game1 = New England Patriots then
set week1 = points1
where username = user_results.username;
else
set week1 = 0
where username = user_results.username;
我不斷收到一個錯誤說:#1064 - 你有一個錯誤在你的SQL語法中;檢查對應於你的MySQL服務器版本正確的語法使用手動附近「如果user_week1_picks.game1 =新英格蘭愛國者然後 集week1 = points1 」第2行
我想要的結果是所有的週報比分爲玩家們通過這個查詢的計算所以它會是這個樣子:
username week1 week2
jake25 9 0
test24 0 0
是有在那裏是一個問題,並感謝答覆。我想這比我想象的要複雜得多。對於最後一部分,它看起來會運行,直到出現語法錯誤的GROUP BY部分。任何想法?看起來我已經爲自己的工作做好準備,瞭解sql以及如何運行此查詢。非常感謝你的幫助! – jake25
最後一個SELECT查詢是通過用戶名獲得「總分」的一種方式的示例,但它有一些問題。 'LEFT'關鍵字可以省略,不需要將它作爲外連接,也沒有連接謂詞。因此,'LEFT'關鍵字可以用'CROSS'關鍵字替代,表示'week1_picks'中的每一行匹配'nfl_schedule(兩個表中的「跨產品」)中的每一行。也。 SELECT列表中的「r.week1」無效,應該刪除。並且's.game'應該被移除。首先編寫查詢以返回單個行,獲取工作 – spencer7593
並進行測試,驗證結果。然後從這裏開始,您可以添加GROUP BY和SUM()聚合,以便將單個行摺疊爲單行(通過用戶名),並從摺疊後的行中返回總數。如果您只是在學習SQL,那麼我會建議您在處理「計算總分」問題之前開始處理一些簡單問題的查詢。 (這個問題由於表格的設計而變得複雜,如果'week1_picks'表格被標準化,每個遊戲都有一個單獨的行,以及一個單獨的「預測」和「點數」列,那將會更簡單。 – spencer7593