左连接的SQL替代方法

时间:2018-02-21 16:52:50

标签: mysql sql join left-join

我有这个查询对表执行left join并返回一些行。

使用左连接查询:

Select DISTINCT 
e.id,e.name
from employee e
left join
job j on j.id = e.id
where e.id like 'D%'

现在,对于同一个查询,我想使用left join得到结果而不用,我能够生成这个SQL查询,它给出了与上述查询相同的结果。

没有左连接的查询:

Select DISTINCT 
e.id,e.name
from employee e, job j
where e.id like 'D%' AND (e.id=j.id  OR  e.id <> j.id)

虽然查询返回与上面相同的结果,但我的问题是: 第二个查询是否有意义以及它是否等同于左连接?

1 个答案:

答案 0 :(得分:1)

我认为exists是更自然的方法:

Select e.id, e.name
from employee e
where exists (select 1 from job j where j.id = e.id) and
      e.id like 'D%';

这也应该有更好的表现。

编辑:

Dnoeth非常好。我错过了&#34;左边&#34;在left join。最简单的查询是:

Select e.id, e.name
from employee e
where e.id like 'D%';

我希望id是唯一的,因此不需要select distinct