2017-04-06 72 views
2

昨天,計算器中的一員幫我更改表在我的數據庫從另一個表的情況。但是我需要再輸入一個條件,不知道該把它放在哪裏。我有theese兩個表:
西甲多WHERE條件

uid | name | games | points | 
___________________________________ 
1 | Daniel | 0 | 0  | 
2 | Mikkel | 0 | 0  | 

kamp2

uid | k1 | k1r | k2 | k2r | week | 
__________________________________________________ 
1 | 1  | 2-1 | X | 2-2 | 14 | 
2 | 2  | 1-1 | 1 | 2-1 | 14 | 

對於那些誰沒有得到它,但它是一個賭博遊戲,其中用戶賭注在兩個匹配(k1和k2)和一個結果(k1r和k2r)上。 比方說,第一場比賽是2-1,我使用:

UPDATE liga l JOIN 
     kamp2 k 
     ON l.uid = k.uid 
    SET point = (CASE WHEN k.k1 = '1' and k.k1r = '2-1' THEN point + 5 
         WHEN k.k1r = '2-1' AND k.k1 <> '1' THEN point + 3 
         WHEN k.k1 = '1' AND k.k1r <> '2-1' THEN point + 1 
         ELSE point 
       END) 
    WHERE l.uid = k.uid ; 

和它完美workes。 丹尼爾得到5分和的Mikkel得3分。但現在我的問題。下週他們將發送另一場週末號碼。所以我其實只是想要它

UPDATE liga l JOIN 
     kamp2 WHERE k.week = 15 
     ...... 

但它不會允許的。那麼我應該在哪裏放置這種情況?

+0

我不遵循的邏輯。 –

回答

1

你應該在where子句添加到末尾(其中其他where從句的位置)。
在sql中,你首先聲明你想更新哪張表UPDATE table,然後你想用哪個值更新哪些字段SET field='val'以及最後應該在哪條記錄上完成WHERE field=42

UPDATE liga l JOIN kamp2 k ON l.uid = k.uid 
    SET point = (CASE WHEN k.k1 = '1' and k.k1r = '2-1' THEN point + 5 WHEN k.k1r = '2-1' 
    AND k.k1 <> '1' THEN point + 3 WHEN k.k1 = '1' 
    AND k.k1r <> '2-1' THEN point + 1 ELSE point END) 
    WHERE l.uid = k.uid AND k.week=15 ; 
+0

哇,我嘗試了5次,並且它不工作,現在我複製你的代碼,它實際上工作!好的,謝謝! :)必須犯了一個錯誤,我的代碼之前:) –

+1

沒問題,很高興它的作品! –

2

我不知道我是否理解你的問題,但你可以使用

l.uid = k.uid and k.week = 15 

where(case1,case2) 

最後一種方法是自己的MySQL。