UPDATE语句FROM位置报错求助:为未知emp_number员工涨薪10%
解决UPDATE语句中FROM关键字报错的问题
看起来你遇到的是数据库SQL方言差异导致的语法错误——你的写法是SQL Server/PostgreSQL支持的UPDATE JOIN格式,但如果你的数据库是MySQL、Oracle这类,就会报语法错误。
不同数据库的正确写法:
如果是MySQL:
MySQL的UPDATE多表更新语法要求把JOIN放在UPDATE之后,而不是用FROM子句。调整后的语句如下:UPDATE monthly_pay m INNER JOIN Employee e ON e.emp_number = m.emp_number SET m.mon_hourly_pay_rate = m.mon_hourly_pay_rate * 1.1 WHERE e.emp_name = "John Smith";如果是Oracle:
Oracle不支持这种直接JOIN的UPDATE写法,你可以用MERGE语句来实现:MERGE INTO monthly_pay m USING (SELECT emp_number FROM Employee WHERE emp_name = 'John Smith') e ON (m.emp_number = e.emp_number) WHEN MATCHED THEN UPDATE SET m.mon_hourly_pay_rate = m.mon_hourly_pay_rate * 1.1;如果是SQL Server/PostgreSQL:
你的原语句其实是符合语法的,这种情况下可能是编辑器的语法校验规则有误(比如编辑器默认匹配MySQL语法,但你实际用的是SQL Server),可以检查编辑器的数据库语法配置,或者换用对应数据库的客户端工具测试。
排查思路总结:
- 先确认你使用的数据库类型(这是关键,不同数据库的UPDATE多表语法差异很大)
- 根据数据库类型调整语句格式
- 如果数据库确实支持原语法,检查编辑器的语法校验配置是否匹配你的数据库
内容的提问来源于stack exchange,提问作者Thien Nguyen
相关产品推荐
相关产品推荐

