0

我有一个列名“余额”和“状态”。我从用户输入中获得了数量。
我要执行的是更新余额(余额数量)
,如果余额为 0,则在更新余额后,我想将状态更改为 2。
是否可以在一个查询中执行这 2 个操作?

提前致谢。

4

2 回答 2

1

是的,你可以做一个查询,所有需要做的就是使用InLine IF语句。

UPDATE tableName
SET balance = balance - qty,
    status = IF(balance - qty = 0, 2, status)
// WHERE condition here (if any)...

并且由于您提到Qty来自用户,请查看下面的文章以了解如何防止SQL Injection. 通过使用 PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-01-04T01:26:06.400 回答
0

是的; 您可以编写如下内容:

UPDATE ...
   SET balance = ...,
       status = CASE WHEN ... = 0 THEN 2 ELSE status END
 WHERE ...
;
于 2013-01-04T01:25:41.920 回答