if field = 1 delete else update field =(field-1)

时间:2012-01-26 15:50:27

标签: mysql

我想知道如何用负增量更新字段,但如果新值小于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'" }

只是想知道你是否可以在一个查询中执行此操作?

2 个答案:

答案 0 :(得分:1)

你想要这样的东西??????

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

答案 1 :(得分:0)

我会在一个事务中执行此操作,以确保所有更新同时由数据库的其他用户查看

Begin
Delete from my_table where my_field <= 1
Update my_table set my_field = my_field - 1
Commit