Последние два предложения в основном говорят о том, что, пока подзапрос возвращает что-то, что НЕ является пустой таблицей, то то, что вы помещаете в это выражение SELECT, является спорным, поскольку вы просто проверяете существование.Пример:
SELECT DISTINCT store_type FROM stores
WHERE EXISTS (SELECT 'poop' FROM cities_stores
WHERE cities_stores.store_type = stores.store_type);
Мы получим poop для каждой строки, которая возвращается во втором SELECT.Опять же, пока существует хотя бы одна строка в towns_stores, где store_type равен начальному SELECT's store_type, тогда эта таблица БУДЕТ существовать.
Важность?В этом примере, скажем, у нас много магазинов разных типов.Внезапно мы хотим знать все различные типы магазинов, которые у нас существуют, с несколькими оговорками: тип магазина - это тип, найденный в городе (представленными в городах сити), а также НЕ те, которые находятся в разработке,но те, которые на самом деле открыты (представлены нашей таблицей магазинов).Ну, мы бы использовали этот запрос, чтобы получить список всех типов store_types.
И причина, по которой вы получаете все столбцы, в том, что * означает все столбцы в таблице (таблицах), которые ВЫ ВЫБИРАЛИ ИЗ.