Мені здається, що ви можете зробити те ж саме в SQL-запиті, використовуючи або НЕ ІСНУЄТЬСЯ, ні ВНУТЬ, або ВЛІТТЕ ПРИЄДНАЙТЕСЬ, ЩО НУЛЬНО. Наприклад:
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запиті, тому що мені боляче розбирати їх, а потім викидати їх!". З комп’ютером все гаразд.