更新语句上的 MySQL 语法错误
Posted
技术标签:
【中文标题】更新语句上的 MySQL 语法错误【英文标题】:MySQL Syntax Error on update statement 【发布时间】: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 的下划线
【问题讨论】:
【参考方案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 函数来生成新字符串。
【讨论】:
以上是关于更新语句上的 MySQL 语法错误的主要内容,如果未能解决你的问题,请参考以下文章
更新时出现休眠错误:无法执行语句,在 'index=1' 附近使用正确的语法