Мне кажется, что вы можете сделать то же самое в запросе SQL, используя NOT EXISTS, NOT IN или LEFT JOIN WHERE NULL. Например:
SELECT a FROM table1 WHERE a NOT IN (SELECT a FROM table2)
SELECT a FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.a = table2.a)
SELECT a FROM table1 LEFT JOIN table2 ON table1.a = table2.a WHERE table1.a IS NULL
Я не уверен, что я правильно понял весь синтаксис, но это общие приемы, которые я видел. Почему я решил бы использовать один поверх другого? Отличается ли производительность ...? Какой из них самый быстрый / самый эффективный? (Если это зависит от реализации, когда я буду использовать каждый из них?)
EXISTSпредложении. Вы можете вернуться *, NULLили как угодно: все это будет оптимизировано.
SELECTи FROM. И *просто легче набрать. Да, SQLимеет некоторое сходство с естественным языком, но он анализируется и выполняется машиной, запрограммированной машиной. Дело не в том, что он когда-нибудь внезапно взорвется в вашей кабинке и закричит: «Прекратите требовать дополнительные поля в EXISTSзапросе, потому что мне надоело их анализировать, а затем отбрасывать!». Все нормально с компьютером, правда.