【问题标题】:Why can't this IF-STATEMENT work in MySQL?为什么这个 IF-STATEMENT 不能在 MySQL 中工作?
【发布时间】:2016-05-29 17:19:00
【问题描述】:
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。

【问题讨论】:

    标签: mysql database mariadb


    【解决方案1】:

    检查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 的新值进行更新。否则它将保持不变。

    【讨论】:

    • 我可以有一个父 IF 基本上说 IF (X >0) THEN 执行所有分配,否则,什么都不做?
    • 不,您必须为每一列写IF。当然,IF 中的条件可以相同。但它不能只提取一次使用。另请参阅有关“不做任何事情”的答案中的新示例。
    猜你喜欢
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多