【发布时间】:2023-04-02 23:20:01
【问题描述】:
我想对将更新记录的数据库进行一次查询请求,但如果此更改后的一条特定记录等于 0,我想删除这一行。可能吗?示例:
UPDATE `table` SET `row1`=`row1`+5, `row2`=`row2`+30 IF (row1 after the update == 0) DELETE WHERE `primarycolumn`=1
显然,IF (row1 after the change == 0) DELETE 部分只是不起作用的伪代码 - 是否有可能创建一个使其以这种方式工作的查询?
【问题讨论】:
-
没有。 MySQL 中没有结合 UPDATE 和 DELETE 操作的查询类型。但是您可以通过使用存储过程而不是单个查询来解决您的任务。
-
但是有一个 IF 语句,我确实遇到了麻烦。我确信会有一种使用它的方法。也许我不应该写“一个查询”——我的意思是,只用一个来自 php.ini 的 mysqli 连接就可以做到这一点。对不起我的英语不好。
-
IF语句只能在某些复合语句中使用。存储过程就是其中之一。 -
我在想
IF EXISTS(SELECT 1 FROM table WHERE primarycolumn=1 AND row1=-5) THEN {DELETE ...} ELSE {UPDATE ...}之类的东西 - 因为我知道,当我将 +5 添加到 row1 时,如果它的当前值为 -5,我将得到 0。但是上面的这段代码不起作用,我不知道正确的说法是什么...... -
你当然可以考虑这个——但是 MySQL 中没有匿名块...
标签: mysql sql-update sql-delete