MYSQL更新查询,如果更新的值满足条件,则会删除该行

MYSQL更新查询,如果更新的值满足条件,则会删除该行,mysql,sql-update,sql-delete,Mysql,Sql Update,Sql Delete,我想对数据库进行一次查询,以更新记录,但如果此更改后的一条特定记录等于0,我想删除此行。可能吗?例如: UPDATE `table` SET `row1`=`row1`+5, `row2`=`row2`+30 IF (row1 after the update == 0) DELETE WHERE `primarycolumn`=1 显然,更改==0之后的IF row1 DELETE部分只是不起作用的伪代码-是否可以创建一个查询使其以这种方式工作?您不需要更新,然后检查row1=0。 使用此条

我想对数据库进行一次查询,以更新记录,但如果此更改后的一条特定记录等于0,我想删除此行。可能吗?例如:

UPDATE `table` SET `row1`=`row1`+5, `row2`=`row2`+30 IF (row1 after the update == 0) DELETE WHERE `primarycolumn`=1

显然,更改==0之后的IF row1 DELETE部分只是不起作用的伪代码-是否可以创建一个查询使其以这种方式工作?

您不需要更新,然后检查row1=0。 使用此条件删除:

DELETE FROM `table` 
WHERE `primarycolumn` = 1 AND `row1` + 5 = 0 
如果条件失败,则不会删除任何内容。 然后执行更新:


如果该行未被删除,它将被更新,但如果它被删除,则不会更新任何内容。

否。MySQL中没有结合更新和删除操作的查询类型。但是您可以使用存储过程而不是单个查询来解决您的任务。但是有一个IF语句,我确实遇到了麻烦。我相信会有办法使用它。也许我不应该写一个查询——我的意思是,只需要一个来自php的mysqli连接就可以实现。对不起,我的英语不好。IF语句只能用在复合语句中。存储过程就是其中之一。我在想,如果EXISTSSELECT 1从primarycolumn=1和row1=-5的表中,然后{DELETE…}或者{UPDATE…}-因为我知道,当我向row1添加+5时,如果当前值是-5,我将得到0。但是上面的代码不起作用,我也不知道什么是正确的语句……当然,你可能会想到这一点——但MySQL中没有匿名块……我想问一下其他的解决方案,但这不仅聪明,而且对我来说也行。这正是我想要的,即使我不知道是这样!
UPDATE `table` 
SET `row1`= `row1`+ 5, `row2` = `row2` + 30 
WHERE `primarycolumn` = 1