首页 > 解决方案 > 如何在 SQL 的 WHERE 条件中使用 AVG()?

问题描述

我试图Employee_Age通过增加年龄不等于平均年龄的 10 年来更新“员工”表。

我确实尝试过这样的:

UPDATE Employee
SET Employee_Age = Employee_Age + 10
WHERE Employee_Age != (SELECT AVG(Employee_Age) FROM Employee)

但我收到一个错误:

#1093 - 您不能在 FROM 子句中指定目标表 'Employee' 进行更新

标签: mysqlsql-updateaveragewhere-clause

解决方案


基本问题是,每次更新都会得到不同的结果。

所以使用像这样的临时表

UPDATE Employee
SET Employee_Age = Employee_Age + 10
WHERE Employee_Age != (SELECT AVG(Employee_Age) FROM (SELECT * FROM Employee) t1)

推荐阅读