Mysql 使用外键关系的SQL查询

Mysql 使用外键关系的SQL查询,mysql,database,foreign-key-relationship,Mysql,Database,Foreign Key Relationship,我正在学习MySQL,我正在尝试在查询中做简单的算法, 我试图找出平均工资最高的部门,并获得部门名称。 但是我不知道如何使用外键访问ProfessorsTable表。 有人能帮我吗?谢谢大家! 这就是我所尝试的: SELECT Department FROM ProfessorsTable WHERE max(AVG(Salary)); 以下是我的两张桌子: CREATE TABLE DepartmentsTable ( Department VARCHAR(50) NOT NUL

我正在学习MySQL,我正在尝试在查询中做简单的算法, 我试图找出平均工资最高的部门,并获得部门名称。 但是我不知道如何使用外键访问
ProfessorsTable
表。 有人能帮我吗?谢谢大家!

这就是我所尝试的:

 SELECT Department FROM ProfessorsTable WHERE max(AVG(Salary));
以下是我的两张桌子:

 CREATE TABLE DepartmentsTable
 (
   Department VARCHAR(50) NOT NULL,
   Faculty VARCHAR(50) NOT NULL,
   Building VARCHAR(50) NOT NULL,
   CONSTRAINT PRIMARY KEY (Department)
 ) type = InnoDB;

 CREATE TABLE ProfessorsTable
 (
   Name VARCHAR(50) NOT NULL,
   Department VARCHAR(50) NOT NULL,
   Rank VARCHAR(50) NOT NULL,
   Salary INT UNSIGNED NOT NULL,
   CONSTRAINT FOREIGN KEY (Department) REFERENCES DepartmentsTable(Department), 
   CONSTRAINT PRIMARY KEY (Name, Department)
 ) type = innoDB;

为了完成您希望执行的操作,工作流程如下:

您要选择薪资最高的教授的系名。因此,您需要按薪资对教授进行排序,从列表中选择第一位(最高薪资),然后返回他/她的部门

试试这个:

SELECT Department FROM ProfessorsTable ORDER BY Salary DESC LIMIT 1;
编辑:

我误解了原来的问题。以下是获取薪资最高部门的部门名称的方法:

SELECT Department FROM ProfessorsTable GROUP BY Department ORDER BY AVG(salary) DESC LIMIT 1;

基本思想是sam:首先按平均工资排序,然后选择只保留第一个结果。

要获得所有部门的平均工资

SELECT Department, avg(Salary) AS avg_salary
FROM ProfessorsTable 
GROUP BY Department
ORDER BY avg_salary DESC;
仅获取平均值最高的部门

SELECT Department, avg(Salary) AS avg_salary
FROM ProfessorsTable 
GROUP BY Department
ORDER BY avg_salary DESC LIMIT 1;
“你要选择薪水最高的教授的系名。”这不是问题的要求。