Мне интересно, почему, когда вы присоединяете две таблицы к ключу внутри существующего подзапроса, соединение должно происходить в предложении WHERE вместо предложения FROM.Присоединиться к подзапросу «существует»
Это мой пример:
Регистрация в ЕКОМ:
SELECT payer_id
FROM Population1
WHERE NOT EXISTS
(Select *
From Population2 join Population1
On Population2.payer_id = Population1.payer_id)
Регистрация в ИНЕКЕ:
SELECT payer_id
FROM Population1
WHERE NOT EXISTS
(Select *
From Population2
WHERE Population2.payer_id = Population1.payer_id)
Первый запрос дает мне 0 результаты, которые я знаю, это неправильно , а второй запрос дает тысячи результатов, которые я ожидаю увидеть.
Может кто-то просто объяснить мне, почему, когда соединение происходит в подзапросах EXISTS? Если вы берете подзапросы без родительского запроса и запускаете их, они буквально дают вам тот же результат.
Это очень помогло бы мне запомнить, чтобы не продолжать делать эту ошибку при использовании.
Заранее спасибо.
первый запрос практически не имеет смысла. Итак, вы присоединяетесь к таблицам «Population1» с «Population2», и вы говорите, что если в результате этого соединения существует какая-либо строка, то ничего не возвращайте из «Population1». Вот почему вы получаете 0 строк – Lamak
Покажите некоторые примеры данных из 2 таблиц и ожидаемый результат. Тогда мы можем вам помочь. – PhillipXT
И второй запрос показывает вам все строки в '' 'Population1''', где нет соответствующей записи в' '' Population2'''. – Anand