Мой SQL не такой сильный, как мог бы быть.Это другой способ мышления по сравнению с написанием C #.Я работаю над запросом и переписываю его, используя «left join / is null», чтобы уйти от синтаксиса «not in».
select t1.id, t2.col1
from table1 t1
join table2 t2 on t1.id = t2.id
left join (select sub.id from ratherLargeSubquery sub) s1
On s1.id = t1.id
left join (select sub.id from ratherLargeSubquery sub) s2
On s2.id = t2.id
where
s1.id is null and
s2.id is null
Можно ли как-то уйти от написания довольно большого количества дважды?Я пробовал
select t1.id, t2.col1
from table1 t1
join table2 t2 on t1.id = t2.id
left join (select sub.id from ratherLargeSubquery sub) s1
On (s1.id = t1.id and t2.id = s1.id)
where
s1.id is null
, но, конечно, он возвращает те же результаты, как если бы я никогда не добавлял левое соединение в первую очередь, а
select t1.id, t2.col1
from table1 t1
join table2 t2 on t1.id = t2.id
left join (select sub.id from ratherLargeSubquery sub) s1
On (s1.id = t1.id or s1.id = t2.id)
where
s1.id is null
Просто работает более 20 раздлительность исходного запроса без всякого возврата результатов.
Вернемся к вопросу, есть ли способ написать его без написания LargeSubquery дважды