INSERT INTO individual_key_log (stuff, stuff1, stuff2)

VALUES("YOUR_PK_NAME_HERE", 2, 3)

ON DUPLICATE KEY UPDATE stuff="YOUR_PK_NAME_HERE",

    IF (1 > 0) THEN
        SET stuff1 = 1;
    ELSE
        SET stuff1 = 2;
    END IF;


如何实现上述逻辑?我正在使用MariaDB。

最佳答案

检查IF syntax in manual。您的语法错误。您可以尝试以下方法:

INSERT INTO individual_key_log (stuff, stuff1, stuff2)
VALUES("YOUR_PK_NAME_HERE", 2, 3)
ON DUPLICATE KEY UPDATE stuff="YOUR_PK_NAME_HERE", stuff1 = IF(1 > 0, 1, 2)


更新资料

如果您不想更新值并将其保留不变,请使用此查询。

INSERT INTO individual_key_log (stuff, stuff1, stuff2)
VALUES("YOUR_PK_NAME_HERE", 2, 3)
ON DUPLICATE KEY UPDATE stuff1 = IF(X > 0, VALUES(stuff1), stuff1)


如果IF中的条件为true,则将使用stuff1中的新值更新INSERT。否则,它将保持不变。

关于mysql - 为什么此IF-STATEMENT无法在MySQL中工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37512789/

10-11 01:57