我有一个列名“余额”和“状态”。我从用户输入中获得了数量。
我要执行的是更新余额(余额数量)
,如果余额为 0,则在更新余额后,我想将状态更改为 2。
是否可以在一个查询中执行这 2 个操作?
提前致谢。
是的,你可以做一个查询,所有需要做的就是使用InLine IF
语句。
UPDATE tableName
SET balance = balance - qty,
status = IF(balance - qty = 0, 2, status)
// WHERE condition here (if any)...
并且由于您提到Qty
来自用户,请查看下面的文章以了解如何防止SQL Injection
. 通过使用 PreparedStatements,您可以摆脱在值周围使用单引号。
是的; 您可以编写如下内容:
UPDATE ...
SET balance = ...,
status = CASE WHEN ... = 0 THEN 2 ELSE status END
WHERE ...
;