删除所有工资低于教师平均工资的教师
如果我使用下面的 MySQL:
delete from instructor
where salary< (select avg (salary) from instructor);
如果我们使用上面的SQL,会导致一个问题:当我们从存款中删除元组时,平均工资发生变化
那么如何实现呢?
我有一个想法
- 首先,计算平均工资并找出所有要删除的元组
- 接下来,删除上面找到的所有元组(没有 重新计算平均值或重新测试元组)
但是当我实现这个时: 它总是在 Workbench with MySQL 中显示错误
delete
from (select*
from instructor
where salary < (select avg(salary) from instructor)) as A
谁能帮我解决一下?
最佳答案
您可以将平均值存储到变量中。
set @average = (...)
delete from instructor where salary < @average
或者如果您希望它在单个查询中:
delete from instructor
cross join (SELECT avg(salary) as average from instructor) t
where salary < average;
关于mysql - 如何删除元组作为工资低于平均水平?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26226373/