2013-01-04 2 views
0

열 이름이 'balance'& '상태'입니다. 나는 사용자 입력에서 수량 있어요.
내가 수행하고 싶은 것은 업데이트 밸런스 (balance-qty)
이고 밸런스가 0 인 경우 잔액을 업데이트 한 후 상태를 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를 사용하면 값 주위에 작은 따옴표를 사용하지 않아도됩니다.

+0

덕분에, 그것은 작은 변화와 함께 작동합니다. 명세서 상태 = IF (잔액 = 0,2, 상태) 인 경우 수정했습니다. Balance = balance-qty가 첫 번째 및 if 문을 수행합니다. – user1084885

+0

사용자 입력이 강제로 숫자이므로 SQL 주입에 대해 걱정할 필요가 없습니다. – user1084885

0

예; 당신이 뭔가를 작성할 수 있습니다

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