0

「残高」と「ステータス」という列名があります。ユーザー入力から数量を取得しました。
私が実行したいのは残高の更新 (balance-qty)
で、残高が 0 の場合は残高を更新した後、ステータスを 2 に変更したいのです
が、これら 2 つの操作を 1 つのクエリで実行することは可能ですか?

前もって感謝します。

4

2 に答える 2

1

はい、それを 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 に答える