在1个查询中给定条件更新两列

时间:2013-01-04 01:21:56

标签: php mysql sql

我有一个名称'balance'& '状态'。我从用户输入中得到了数量 我想要执行的是更新余额(balance-qty)
如果余额为0,则在更新余额后,我想将状态更改为2 是否可以在一个查询中执行这两个操作?

提前致谢。

2 个答案:

答案 0 :(得分: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,您可以摆脱在值周围使用单引号。

答案 1 :(得分:0)

是;你可以这样写:

UPDATE ...
   SET balance = ...,
       status = CASE WHEN ... = 0 THEN 2 ELSE status END
 WHERE ...
;