首页 > 解决方案 > Mysql一表内多重比较

问题描述

Mysql知识远非完美。我不能把它全部搞清楚,所以我想我可以在这里尝试一下以理解逻辑。

我有两张桌子

表:办公室

ID(整数(pk)) 名称(varchar)

表:员工

ID(整数(pk)) office_id(int 不为空) Chief_id (int) 名称(varchar) 工资(浮动)

我想要 :

a) 选择所有薪酬高于直接主管的人

b) 选择所有办公室的列表以及每个办公室中工资最高的人。如果不止一个人的工资最高,则全部显示。即使没有人,也应该选择办公室。

c) 选择只有一名直接下属的所有首领。

d) 选择按其中人员总工资降序排列的所有办公室。

知道我应该从哪里开始吗?提前致谢!

标签: mysql

解决方案


从 a) 开始

SELECT s.*, chief.wage AS chief_wage
  FROM staff s, staff chief
 WHERE s.chief_id = chief.id
   AND s.wage > chief.wage

这里我们使用 self join 将主管的数据添加到所有员工中。然后只是比较工资。


推荐阅读