如何在使用自我联接时省略某些特定数据

时间:2019-01-05 05:53:31

标签: sql oracle11g oracle10g

from employee e 
join employee e1 on e.dept = e1.dept
where e.id <> e1.id and e1.ename = 'Jack Abraham'

这是我用于SQL的特定代码,工作正常,我无法理解为什么当我希望员工不应该是“ Jack Abraham”时,为什么在特定代码中使用name =“ Jack Abraham”。请清除我的疑问

1 个答案:

答案 0 :(得分:1)

SQL查询的想法是:

  1. 获取所有具有ename = Jack Abraham e1 )的记录
  2. 然后通过自我加入来获得与Jack Abraham但不是Jack Abraham在同一部门的员工( e :相同的dept但不同的{{1} })。

因此,该查询不仅可以获取姓名不是您所想的id的员工。

要获得所有名字不是Jack Abraham,但其部门有名叫Jack Abraham的雇员。

但是,即使一个部门有2名同名Jack Abraham的人,即使这也不是正确的查询。应该是:

Jack Abraham

因此,您可以尝试询问编写该查询的人的真实意图。 或者,您可以要求BA获得要求并重写查询。