SQL选择具有多个不同条件

时间:2018-01-07 22:44:31

标签: sql cratedb

我仍在学习SQL,无法找到找到以下信息的正确方法:

我创建了一张桌子"员工"使用以下列:

' department',' age',' salary',' bonus';

我正在尝试设计一个查询,该查询会让我所有员工在另一个部门拥有与他们年龄相同的人,并且奖金优于他们的工资。

(更确切地说,如果某个部门和销售人员的年龄与部门和研究人员的年龄相同,并且在研究中获得的奖金优于那个人#' 39;工资,然后我想展示他们两个)

这可以在sql中执行吗?

感谢您的时间,

- 汤姆

1 个答案:

答案 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;