「残高」と「ステータス」という列名があります。ユーザー入力から数量を取得しました。
私が実行したいのは残高の更新 (balance-qty)
で、残高が 0 の場合は残高を更新した後、ステータスを 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 を使用すると、値を一重引用符で囲む必要がなくなります。
はい; 次のように書くことができます:
UPDATE ...
SET balance = ...,
status = CASE WHEN ... = 0 THEN 2 ELSE status END
WHERE ...
;