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/