【问题标题】:MySQL - decrement int value, delete row if int reaches 0MySQL - 递减 int 值,如果 int 达到 0,则删除行
【发布时间】:2015-05-11 20:23:52
【问题描述】:

我正在尝试找到一个与此完全相反的查询:

INSERT INTO WordsTable (word, counter) 
VALUES('$word', 1)
ON DUPLICATE KEY UPDATE counter = counter + 1

(这个 SQL 很好。“word”设置为唯一和所有)

所以,基本上,减少计数器,如果计数器达到 0,则删除整行。我想它可能看起来像这样,但我不知道这是否是有效的语法:

UPDATE WordsTable
SET counter = counter - 1
WHERE id='$deleteThisWord'
IF (occ = 0) THEN
(
    DELETE *
    FROM WordsTable
    WHERE id='$deleteThisWord'
)

有没有一种干净的方法可以做到这一点?

谢谢!

【问题讨论】:

    标签: php mysql sql database


    【解决方案1】:

    你需要做两个查询:

    DELETE
    FROM WordsTable
    WHERE id='$deleteThisWord' AND counter = 1;
    
    UPDATE WordsTable
    SET counter = counter - 1
    WHERE id = '$deleteThisWord'
    

    【讨论】:

    • 单查询根本不可能吗?我对SQL不太了解
    • 不,没有办法将 DELETE 和 UPDATE 结合起来。
    • 您可以使用ON DUPLICATE KEY UPDATE 子句将INSERTUPDATE 组合起来,仅此而已。
    猜你喜欢
    • 1970-01-01
    • 2014-06-28
    • 2010-11-18
    • 2021-03-18
    • 2014-09-21
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 2017-03-09
    相关资源
    最近更新 更多