Как сделать так, чтобы SQL-запрос «не в» был проще использовать «присоединиться»? - PullRequest
1 голос
/ 02 апреля 2012

Есть запрос:

select a.id from selzde.elorder a
inner join selzde.elorder b on a.name = b.name 
    and a.workname = b.workname 
    and b.id = needId
where a.id not in (select id_elorder from selzde.drugselorder)

как сделать SQL-запрос not in проще, используя только join?

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

Соединение влево к drugselorder, на id_elorder = a.id, затем выберите те, которые не совпадают (то есть where drugselorder is null) ... Хотя я бы не сказал, что это было более "просто".

2 голосов
/ 02 апреля 2012
select a.id from selzde.elorder a
inner join selzde.elorder b on a.name = b.name 
and a.workname = b.workname 
and b.id = needId
left outer join selzde.drugselorder d on a.id = d.id_elorder
where d.id_elorder is null
1 голос
/ 03 апреля 2012

Одним из решений было бы использование оператора MINUS, а не следующим образом:

select a.id 
from selzde.elorder a 
     inner join selzde.elorder b 
on a.name = b.name      
and a.workname = b.workname      
and b.id = needId 
MINUS
select id_elorder 
from selzde.drugselorder
;

Надеюсь, это поможет.

С уважением, Roger

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...