我有一个名为employees的表,其中包含列。
ID | Name | Salary | Department_id | Boss_id
因此,无论老板与否,所有员工都会被列入其中。如果某人不是老板,那么他们对Boss_id的值将为NULL。
目的是要弄清楚是否有任何员工的收入高于他们各自的老板,而且我的意思是来自同一个部门。
我一直在努力解决这个问题,我不确定是否需要循环来遍历所有部门,或者是否有更简单的方法。
答案 0 :(得分:4)
不,你不需要循环。
如果您想将员工的薪水与其“老板”的薪水进行比较,您可以使用JOIN操作。
仅列出薪水高于老板的员工:
SELECT e.*
FROM employee e
JOIN employee b
ON b.id = e.boss_id
AND e.salary > b.salary
如果您想列出所有员工,只需添加一个列,表明他们的薪水是否高于他们的老板薪水,以及老板薪水:
SELECT e.*
, IF(e.salary>b.salary,'Y','N') AS higher_salary_than_boss
, b.salary AS boss_salary
FROM employee e
LEFT
JOIN employee b
ON b.id = e.boss_id
ORDER
BY e.id
我不知道“部门”是如何发挥作用的。
如果您想比较员工的薪水与他的老板老板的比较,您可以在员工表中添加另一个LEFT JOIN。
答案 1 :(得分:2)
SELECT t1.ID, t1.Name
FROM table1 t1
INNER JOIN table2 t2
ON t1.ID = t2.Boss_id
AND t1.Salary > t2. Salary
AND t1.Department_id = t2.Department_id