如何删除元组作为工资低于平均水平?

时间:2014-10-06 23:24:37

标签: mysql sql average sql-delete

删除所有薪水低于教师平均薪水的教师

如果我使用下面的MySQL:

delete from instructor
where salary< (select avg (salary) from instructor);

如果我们使用上面的SQL,它将导致一个问题:当我们从存款中删除元组时,平均工资变化

那么如何实现呢?

我知道

  1. 首先,计算平均工资并查找要删除的所有元组
  2. 接下来,删除上面找到的所有元组(没有          重新计算avg或重新测试元组)
  3. 但是当我实现这个: 它始终在使用MySQL的Workbench中显示错误

    delete 
    from (select*
        from instructor
        where salary < (select avg(salary) from instructor)) as A
    

    任何人都可以帮我解决吗?

1 个答案:

答案 0 :(得分:3)

您可以将平均值存储到变量中。

set @average = (...)  
delete from instructor where salary < @average  

或者如果您希望它在一个查询中:

delete from instructor 
cross join (SELECT avg(salary) as average from instructor) t 
where salary < average;