我是SQL和MYSQL
的新手,正在尝试使用UPDATE
语句在CASE
语句中设置值。我正在尝试在THEN
语句的CASE
部分中做两件事,无法弄清是否是语法问题,或者无法在THEN
部分中做两件事。>
我已经查了这两个问题,却无法将这两个问题与我想做的事情联系起来
Multiple THEN to a single CASE statement?
update mysql with if condition
我目前的尝试
UPDATE offering, tmpTable
SET offering.offNumEnrolled = CASE WHEN offering.OffNumEnrolled = 0
THEN (tmpTable.stdTotal SET aRowsAltered = aRowsAltered + 1)
ELSE (offering.offNumEnrolled) END
WHERE [some condition]
为了更好地说明我要在此处完成的工作,请参见以下代码:
UPDATE offering, tmpTable
SET offering.offNumEnrolled = IF (offering.OffNumEnrolled = 0) THEN
(SET TO THIS tmpTable.stdTotal AND
SET aRowsAltered = aRowsAltered + 1)
ELSE
SET offering.offNumEnrolled;
END IF;
WHERE [some condition]
如果更改了行,设置值和增加计数器的正确方法是什么?
答案 0 :(得分:1)
我认为您想要这样的东西:
UPDATE offering o JOIN
tmpTable tt
ON <join conditions here>
SET o.offNumEnrolled = tt.stdTotal,
?.aRowsAltered = ?.aRowsAltered + 1
WHERE o.OffNumEnrolled = 0;
?
是aRowsAltered
来自何处的表别名。在这种情况下,它可能是可选的,但通常是限定列名的一个好习惯。
注意:
JOIN
子句中支持UPDATE
。使用它。JOIN
条件应该放在ON
子句中。o.OffNumEnrolled = 0
上的条件在WHERE
子句中。aRowsAltered
而不管它在哪个表中。