Я пытаюсь запустить запрос, который возвращает все записи в таблице, которая существует в подзапросе.MySQL WHERE EXISTS оценивает значение true для всех записей
Однако он возвращает все записи только тех, которые я ожидаю.
Вот запрос:
SELECT DISTINCT x FROM T1 WHERE EXISTS
(SELECT * FROM T1 NATURAL JOIN T2 WHERE T2.y >= 3.0);
Я попытался тестирования подзапрос и возвращает правильное количество записей, удовлетворяющих мое ограничение.
Но когда я запускаю весь запрос, он возвращает записи, которые не должны существовать в подзапросе.
Почему EXISTS оценивает значение true для всех записей в T1?
это работа !! Спасибо, я приму этот ответ, как только смогу. У меня есть некоторая путаница с коррелированными vs join. Почему разум вел себя так, как будто это было верно все время? – jor
твой вел себя как истинный все время, потому что второй запрос был полностью независим, и, следовательно, что-то существовало для каждой записи в оцениваемой таблице. то есть не было способа согласования результата подзапроса с какой-либо конкретной строкой в T1, поэтому все строки были возвращены. –