我的员工表结构如下图所示

以下查询获得部门ID基于部门平均最高薪水
SELECT dep_id
FROM employee
GROUP BY dep_id
ORDER BY AVG( salary ) DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
产量
dep_id
2
Run Code Online (Sandbox Code Playgroud)
但我在更新查询中有问题
UPDATE employee
SET salary = salary +1000
where dep_id = (
SELECT dep_id
FROM employee
GROUP BY dep_id
ORDER BY AVG( salary ) DESC
LIMIT 1
)
Run Code Online (Sandbox Code Playgroud)
您当前SELECT声明的问题是它无法获得dep_id具有相同最高平均值的多个salary.我宁愿这样做,以获得dep_id,
SELECT dep_id
FROM employee
GROUP BY dep_id
HAVING AVG(salary) =
(
SELECT AVG(salary) avg_sal
FROM employee
GROUP BY dep_id
ORDER BY avg_sal DESC
LIMIT 1
)
Run Code Online (Sandbox Code Playgroud)
那么你现在可以更新salary每个emp_id平均工资最高的人.
UPDATE employee a
INNER JOIN
(
SELECT dep_id
FROM employee
GROUP BY dep_id
HAVING AVG(salary) =
(
SELECT AVG(salary) avg_sal
FROM employee
GROUP BY dep_id
ORDER BY avg_sal DESC
LIMIT 1
)
) b ON a.dep_id = b.dep_id
SET a.salary = a.salary + 1000
Run Code Online (Sandbox Code Playgroud)