MySQL-根据平均值按百分比增加值

MySQL-根据平均值按百分比增加值,mysql,sql,Mysql,Sql,我有一张名为讲师的桌子 UPDATE instructor SET salary=salary*1.05 where salary<(select avg(salary) from instructor) 不能在同一查询中更新表并将其用作子选择。这样做根本没有意义 为了实现您的目标,您需要运行两个不同的查询。第一个将是您的子选择。然后,第二个查询使用第一个查询的结果作为参数更新表 问题1: select avg(salary) from instructor 问题2: UPDATE i

我有一张名为讲师的桌子

UPDATE instructor
SET salary=salary*1.05
where salary<(select avg(salary) from instructor)

不能在同一查询中更新表并将其用作子选择。这样做根本没有意义

为了实现您的目标,您需要运行两个不同的查询。第一个将是您的子选择。然后,第二个查询使用第一个查询的结果作为参数更新表

问题1:

select avg(salary) from instructor
问题2:

UPDATE instructor
SET salary=salary*1.05
where salary < @avg_salary

可能是您无法基于子选择更新表。为了避免此问题,您应该基于子选择创建临时表。请参阅此

UPDATE instructor
SET salary=salary*1.05
where salary< ( 
      select t.my_avg 
      from (
          select avg(salary) my_avg from instructor
      ) t
) 

我认为这是解决方案,但有一个小错误,你需要一个t别名后,从。。。这不是一个问题answer@Strawberry字体这是一个答案。它包含有关查询为何不起作用的信息,并列出如何解决问题。我的问题已解决。谢谢但它也显示了平均工资值。有没有停止显示的选项?