【问题标题】:UPDATE records from SELECT using a case statement. (mysql)使用 case 语句从 SELECT 更新记录。 (mysql)
【发布时间】:2019-03-17 11:04:01
【问题描述】:

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

错误:#1064 - 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在'FROM(SELECT SoftwareProjects.id, SoftwareProjects.Project_Code,Description' 在第 8 行

这是我的查询:

UPDATE SoftwareProjects
SET BudgetStatus =
CASE
WHEN ((HoursBooked/HoursEstimated) * (100/1) < 80) THEN 1
WHEN ((HoursBooked/HoursEstimated) * (100/1) > 81 && (HoursBooked/HoursEstimated) * (100/1) < 100 ) THEN 2
ELSE   3
END
FROM
(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)

【问题讨论】:

    标签: mysql sql join sql-update case


    【解决方案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 - 字段列表中的 'HoursEstimated' 列不明确”
    • @cyberghost47,修改了你现在可以查看的答案
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2014-03-30
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 2012-02-05
    相关资源
    最近更新 更多