You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取各部门最高薪资中的最小值?MySQL查询问题

解决嵌套查询中“Unknown column 'salary'”的问题

嘿,这个问题我太熟悉了!你报错的核心原因很简单:你的子查询没有给MAX(salary)指定别名,导致外层查询找不到名为salary的列。

咱们一步步理清楚:

  • 你的第一个查询是正确的:SELECT dept_name, MAX(salary) AS max_salary FROM instructor GROUP BY dept_name; 这里给聚合后的薪资列起了max_salary别名,临时结果集里有明确的列名。
  • 但第二个查询的子查询里,你去掉了AS max_salary,所以子查询返回的临时表只有dept_name和一个没有名字的聚合列(本质是MAX(salary)的结果,但没有列名)。外层查询写SELECT min(salary)时,数据库自然找不到这个列。

正确的解决写法

只需要给子查询里的MAX(salary)加上别名(和第一个查询保持一致最好),然后外层查询针对这个别名取最小值即可:

SELECT MIN(max_salary)
FROM (
    -- 子查询必须给聚合列指定别名,让外层能识别
    SELECT dept_name, MAX(salary) AS max_salary 
    FROM instructor 
    GROUP BY dept_name
) AS lowest;

补充说明

如果你不想用max_salary这个别名,也可以换成其他名字(比如dept_max_sal),只要外层查询对应上就行:

SELECT MIN(dept_max_sal)
FROM (
    SELECT dept_name, MAX(salary) AS dept_max_sal 
    FROM instructor 
    GROUP BY dept_name
) AS temp_table;

这样执行后,就会先算出每个部门的最高薪资,再从这些最高薪资里找出最小值,完全符合你的需求。

内容的提问来源于stack exchange,提问作者QueenLewi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:45:08