【问题标题】:MySQL Syntax Error on update statement更新语句上的 MySQL 语法错误
【发布时间】:2012-12-05 19:52:16
【问题描述】:

我有当前的代码,

UPDATE i
SET LeadInventor = 
    CASE 
        WHEN gs.FirstInventorName IS NULL THEN 'No' 
        ELSE 'Yes' 
    END
FROM patentdb.Inventor i
    LEFT JOIN patentdb.generalsource gs
    ON i.InventorFirst + ' ' + i.InventorLast = gs.FirstInventorName

我不明白为什么会抛出以下错误:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM patentdb.Inventor i     LEFT JOIN patentdb.generalsource gs     ON i.Invent' at line 7

FROM 语句是 MYSQL 的下划线

【问题讨论】:

    标签: mysql sql mysql-workbench


    【解决方案1】:

    这是因为 FROM 子句在 MySQL UPDATE 语句中无效:

    http://dev.mysql.com/doc/refman/5.6/en/update.html

    你的运气可能会更好:

    UPDATE Inventor i, generalsource gs
    SET i.LeadInventor = CASE
      WHEN gs.FirstInventorName IS NULL THEN 'No'
      ELSE 'Yes'
    END
    WHERE i.InventorFirst + ' ' + i.InventorLast = gs.FirstInventorName
    

    【讨论】:

      【解决方案2】:

      语法不正确。看看这个查询:

      UPDATE patentdb.Inventor i
        LEFT JOIN patentdb.generalsource gs
        ON CONCAT(i.InventorFirst, ' ', i.InventorLast) = gs.FirstInventorName
      SET LeadInventor = 
        CASE WHEN gs.FirstInventorName IS NULL THEN 'No' ELSE 'Yes' END
      

      另外,我想说的是,在 MySQL 中最好使用 CONCAT 函数来生成新字符串。

      【讨论】:

        猜你喜欢
        • 2011-05-03
        • 2012-10-11
        • 2014-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多