2012-01-26 5 views
0

음수 증가분으로 필드를 업데이트하는 방법을 궁금해했지만 새 값이 1보다 작 으면 행을 삭제 하시겠습니까?field = 1 삭제 else update field = (field-1)

케이스 또는 if/else 블록 안에 문장을 넣고 업데이트 할 수 있습니까?

현재 I는 PHP로 평가하고 두 번째 쿼리를하고, 현재 값을 얻기 위해 선택 문을하고있는 중이 야 : 당신이 한 쿼리에서이 작업을 수행 할 수 있다면

if ($row['field']==1) { "DELETE from table WHERE k='123'" } else { "UPDATE table SET field=(field-1) WHERE k='123'" }

그냥 궁금?

+5

당신이 무엇을하려고 않은에서 데이터베이스의 다른 사용자가 볼 수 있는지 확인하기 위해, 트랜잭션에 그것을 할 것인가? – BugFinder

+0

왜 두 단계로 진행하지 않습니까? 모든 행을 삭제 한 다음 별도의 쿼리로 업데이트하십시오. – JohnFx

답변

1

다음과 같이 하시겠습니까?

DELETE FROM table WHERE (field-1) < 1 
UPDATE table SET field = (field-1) WHERE (field-1) >= 1 
0

나는 모든 업데이트가 동시에

Begin 
Delete from my_table where my_field <= 1 
Update my_table set my_field = my_field - 1 
Commit 
관련 문제