2012-01-26 68 views
0

我想知道如何用負增量更新字段,但是如果新值小於1,請刪除行嗎?if field = 1 delete else update field =(field-1)

是否可以放置和更新case或if/else塊內的語句?

目前我在做一個select語句來獲得當前值,然後用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