我有两个表:projects 和 temp_projects(下面代码中的 $table)。我正在使用以下 MySQL 查询来尝试使用项目中的数据更新 temp_projects 上的字段。
这是查询:
$this->q("UPDATE $table, projects
CASE
WHEN $table.$number_field != projects.number
THEN set $table.$id_field = projects.id WHERE $table.old_proj_num = projects.number
WHEN $table.$number_field = projects.number
THEN SET $table.$id_field = projects.id WHERE $table.$number_field = projects.number
END");
我得到的错误是:
MySQL error 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 'CASE
WHEN temp_projects.number != projects.number
THEN set temp_proj' at line 2
When executing:
UPDATE temp_projects, projects
CASE
WHEN temp_projects.number != projects.number
THEN set temp_projects.project_id = projects.id WHERE temp_projects.old_proj_num = projects.number
WHEN temp_projects.number = projects.number
THEN SET temp_projects.project_id = projects.id WHERE temp_projects.number = projects.number
END
我遇到的问题是错误消息“THEN set temp_proj”在第 2 行中的行
THEN 之后应为 THEN SET temp_projects.project_id =projects.id WHERE temp_projects.number =projects.number。
我试图找出为什么它在THEN set temp_proj之后切断查询
我不熟悉使用 CASE 命令,因此我们将不胜感激。
谢谢。
最佳答案
按如下方式进行查询:
> UPDATE Students
SET NAME = CASE
> WHEN NAME = 'ABC' THEN 'MNO'
> WHEN NAME = 'DEF' THEN 'JKL'
> WHEN NAME = 'EFG' THEN 'GHI'
> ELSE NAME
> END WHERE LASTNAME IN ('ABC', 'DEF', 'EFG')
关于php - 使用 CASE 尝试更新两个表之间的字段时出现 MySQL 错误 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645108/