为什么这个 IF-STATEMENT 在 MySQL 中不能工作?
Why can't this IF-STATEMENT work in MySQL?
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
中的条件为真,stuff1
将更新为 INSERT
中的新值。否则它将保持不变。
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
中的条件为真,stuff1
将更新为 INSERT
中的新值。否则它将保持不变。