使用case语句从SELECT更新记录。(mysql)

使用case语句从SELECT更新记录。(mysql),mysql,sql,join,sql-update,case,Mysql,Sql,Join,Sql Update,Case,我正在尝试使用case语句更新记录集合,但我得到: 错误:1064-您的SQL语法有错误;检查手册 对应于MySQL服务器版本的正确语法 从SELECT SoftwareProjects.id中使用near, SoftwareProjects.Project_代码,第8行的“说明” 我的问题是: 更新软件项目 设置预算状态= 案例 当预定小时数/估计小时数*100/181和预定小时数/估计小时数*100/1

我正在尝试使用case语句更新记录集合,但我得到:

错误:1064-您的SQL语法有错误;检查手册 对应于MySQL服务器版本的正确语法 从SELECT SoftwareProjects.id中使用near, SoftwareProjects.Project_代码,第8行的“说明”

我的问题是:

更新软件项目 设置预算状态= 案例 当预定小时数/估计小时数*100/1<80时,则为1 当预定小时数/估计小时数*100/1>81和预定小时数/估计小时数*100/1<100时,则为2 其他3 终止 从…起 选择SoftwareProjects.id、SoftwareProjects.Project\u代码、说明、, 预算状态、时间状态、质量状态、总体状态、, 交付日期,估计时间,s4_项目id, 总时数调整为预定时数 来自软件项目 s4_项目_id= S4Admin.ts_entries.project 按描述分组 按软件项目订购。说明 试试下面

UPDATE SoftwareProjects a
  JOIN
  (SELECT SoftwareProjects.id, SoftwareProjects.Project_Code,  Description,  BudgetStatus,  TimelineStatus,  QualityStatus,  OverallStatus,  DeliveryDate,  HoursEstimated,  s4_project_id, SUM( hours_adjusted ) AS HoursBooked
                          FROM SoftwareProjects
                          LEFT JOIN S4Admin.ts_entries ON s4_project_id = 
                          S4Admin.ts_entries.project
                          GROUP BY Description
                          ORDER BY  SoftwareProjects.Description) b on a.id=b.id

SET a.BudgetStatus =
  CASE
  WHEN ((HoursBooked/b.HoursEstimated) * (100/1) < 80) THEN 1
  WHEN ((HoursBooked/b.HoursEstimated) * (100/1) > 81 && (HoursBooked/b.HoursEstimated) * (100/1) < 100 ) THEN 2
  ELSE   3
  END

谢谢你的回复,我现在得到了1052条——字段列表中的“HourseEstimated”列是ambiguous@cyberghost47,修改了您现在可以查看的答案