首页 > 解决方案 > MySQL - 内部联接不适用于更新语句

问题描述

我有下面的查询不起作用,我不知道为什么,因为它似乎与其他类似的查询一起使用。你能告诉我哪里出错了吗?

UPDATE `Student` 
SET Student.Half = 0
FROM `Student`
INNER JOIN `Year`
    on Student.GradYear = Year.GradYear
    and Year.UserID = 1

它应该将表和 Half 更新为 0,但它会出现错误消息“#1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以获取正确的语法以在 'FROM 附近使用Student.GradYear 上的StudentINNER JOIN Year= Year.GradYear 和 Ye' 在第 3 行"

标签: mysql

解决方案


UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...

根据 MySQL 文档,您的语法本身是错误的 https://dev.mysql.com/doc/refman/8.0/en/update.html

UPDATE `Student` 
INNER JOIN `Year`
    on Student.GradYear = Year.GradYear
    and Year.UserID = 1
SET Student.Half = 0;

^这应该工作。


推荐阅读