昨天,stackoverflow的一个成员帮助我用另一个表中的case更改了我的数据库中的表。但我需要再输入一个条件,并且不知道放在哪里。我有两张桌子:
的西甲
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 |
对于那些尚未获得它的人来说,它是一个投注游戏,用户在2场比赛(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 ;
它完美无缺。 Daniel 获得5分, Mikkel 获得3分。但现在我的问题。下周他们将发送另一个下注,其中周数 15 。所以我其实只想要它
UPDATE liga l JOIN
kamp2 WHERE k.week = 15
......
但它不会允许这样做。我应该把条件放在哪里呢?
答案 0 :(得分:2)
我不知道我是否理解你的问题,但你可以使用
l.uid = k.uid and k.week = 15
或
where(case1,case2)
最后一个方法是自己的mysql。
答案 1 :(得分: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 ;