使用case语句从SELECT更新记录。(mysql)
我正在尝试使用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 按描述分组 按软件项目订购。说明 试试下面使用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
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,修改了您现在可以查看的答案