Я думаю, что иду по правильному пути с этим ... Пожалуйста, потерпите меня, поскольку мой SQL не самый лучший
Я пытаюсь запросить базу данных, чтобы выбрать все из одной таблицы, где определенные ячейки не существуют в другой. В этом нет большого смысла, но я надеюсь, что этот фрагмент кода будет
SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)
Так что в основном у меня есть одна таблица со списком сотрудников и их данными. Затем еще одна таблица с некоторыми другими деталями, включая их имена. Если имя отсутствует в таблице eotm_dyn, что означает, что для них нет записи, я хотел бы точно узнать, кто они, или, другими словами, увидеть, что именно отсутствует.
Вышеупомянутый запрос ничего не возвращает, но я знаю, что не хватает 20 имен, поэтому я, очевидно, не понял его.
Кто-нибудь может помочь?
group by X having exist [row with employeeID = e.id]
ИЛИ
ИЛИ
источник
NOT IN
не работает должным образом, еслиname
имеетnull
значения. Смотрите видеоролик « СЕССИЯ: 10 методов настройки запросов, которые должен знать каждый программист SQL» (Кевин Клайн, Аарон Бертран) .Вы можете выполнить LEFT JOIN и подтвердить, что объединенный столбец равен NULL.
Пример:
источник
Никогда не возвращает никаких записей, если
eotm_dyn
не пусто. Вам нужны какие-то критерииSELECT name FROM eotm_dyn
лайковпредполагая, что две таблицы связаны отношениями внешнего ключа. На этом этапе вы можете использовать множество других вариантов, включая LEFT JOIN. Однако в большинстве случаев оптимизатор обычно обрабатывает их одинаково.
источник
Вы также можете взглянуть на этот связанный вопрос . Этот пользователь сообщил, что использование соединения обеспечивает лучшую производительность, чем использование подзапроса.
источник