我仍在学习SQL,无法找到找到以下信息的正确方法:
我创建了一张桌子"员工"使用以下列:
' department',' age',' salary',' bonus';
我正在尝试设计一个查询,该查询会让我所有员工在另一个部门拥有与他们年龄相同的人,并且奖金优于他们的工资。
(更确切地说,如果某个部门和销售人员的年龄与部门和研究人员的年龄相同,并且在研究中获得的奖金优于那个人#' 39;工资,然后我想展示他们两个)
这可以在sql中执行吗?
感谢您的时间,
- 汤姆
答案 0 :(得分:2)
您可以使用exists
执行此操作。因为你关心两个方向的关系,这就像在两个部门寻找年龄相同但没有相同奖金的人一样简单:
select e.*
from employees e
where exists (select 1
from employees e2
where e2.department <> e.department and e2.age = e.age and
e2.bonus <> e.bonus
);
要在同一行上获取对,请使用自联接:
select e1.*, e2.*
from employees e1 join
employees e2
on e1.age = e2.age and e1.department <> e2.department and
e1.bonus > e2.bonus;