基于INNER JOIN的WHERE条件更新行时MySQL语法错误求助
MySQL关联更新语法修正
你遇到的是MySQL的UPDATE语法问题——你写的是SQL Server风格的UPDATE ... FROM写法,但MySQL不支持这种格式,得用它专属的关联更新语法。
正确的UPDATE语句
UPDATE Fixtures f INNER JOIN Results r ON f.FixtureID = r.FixtureID SET f.IsResult = 1 WHERE f.Status = 1 AND f.IsResult = 0 AND f.Season = 1 AND r.TeamID IS NOT NULL AND DATEDIFF(NOW(), f.Date) >= 2;
语法说明
MySQL的关联更新结构是:
- 先写
UPDATE,后跟要更新的主表(这里是Fixtures f) - 接着写
JOIN关联其他表(Results r)并指定关联条件 - 然后写
SET子句定义要更新的列值 - 最后写
WHERE子句添加过滤条件(和你原SELECT的条件完全一致)
这样修改后就能正确执行,把符合条件的Fixtures行的IsResult字段更新为1。
内容的提问来源于stack exchange,提问作者BN83
相关产品推荐
相关产品推荐

