Я пытаюсь изучить SQL, и я с трудом понимаю инструкции EXISTS. Я наткнулся на эту цитату о "существует" и ничего не понимаю:
Используя оператор exist, ваш подзапрос может возвращать ноль, один или несколько строк, а условие просто проверяет, вернул ли подзапрос какие-либо строки. Если вы посмотрите на предложение select в подзапросе, вы увидите, что он состоит из одного литерала (1); поскольку условие в содержащем запросе требует только знать, сколько строк было возвращено, фактические данные, полученные в подзапрос, не имеют значения.
Я не понимаю, как внешний запрос знает, какую строку подзапрос проверяет? Например:
SELECT *
FROM suppliers
WHERE EXISTS (select *
from orders
where suppliers.supplier_id = orders.supplier_id);
Я понимаю, что если идентификатор из таблицы поставщика и заказов совпадает, подзапрос вернет значение true, и все столбцы из соответствующей строки в таблице поставщиков будут выведены. То, что я не получаю, - это то, как подзапрос сообщает, какая конкретная строка (скажем, строка с идентификатором поставщика 25) должна быть напечатана, если возвращается только true или false.
Мне кажется, что между внешним запросом и подзапросом нет никакой связи.