2017-04-06 74 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。