Exists c что это
Оператор EXISTS проверяет, возвращает ли подзапрос какое-либо значение. Как правило, этот оператор используется для индикации того, что как минимум одна строка в таблице удовлетворяет некоторому условию. Поскольку возвращения набора строк не происходит, то подзапросы с подобным оператором выполняются довольно быстро.
Применение оператора имеет следующий формальный синтаксис:
WHERE [NOT] EXISTS (подзапрос)
Например, найдем все товары из таблицы Products, на которые есть заказы в таблице Orders:
SELECT * FROM Products WHERE EXISTS (SELECT * FROM Orders WHERE Orders.ProductId = Products.Id)

Если мы хотим узнать, наоброт, есть ли в таблице строки, которые НЕ удовлетворяют условию, то можно использовать операторы NOT EXISTS . Например, найдем все товары из таблицы Products, на которые не было заказов в таблице Orders:
SELECT * FROM Products WHERE NOT EXISTS (SELECT * FROM Orders WHERE Products.Id = Orders.ProductId)
Стоит отметить, что для получения подобного результата можно было бы использовать и опеатор IN :
SELECT * FROM Products WHERE Id NOT IN (SELECT ProductId FROM Orders)
Но поскольку при применении EXISTS не происходит выборка строк, то его использование более оптимально и эффективно, чем использование оператора IN.
Exists c что это
Оператор EXISTS позволяет проверить, возвращает ли подзапрос какое-либо значение. Как правило, этот оператор используется для индикации того, что какая-либо строка удовлетворяет условию. То есть фактически оператор EXISTS не возвращает строки, а лишь указывает, что в базе данных есть как минимум одна строка, которые соответствует данному запросу. Поскольку возвращения набора строк не происходит, то подзапросы с подобным оператором выполняются довольно быстро.
Применение оператора имеет следующий формальный синтаксис:
WHERE [NOT] EXISTS (подзапрос)
Например, найдем всех покупателей из таблицы Customer, которые делали заказы:
SELECT * FROM Customers WHERE EXISTS (SELECT * FROM Orders WHERE Orders.CustomerId = Customers.Id)

Другой пример — найдем все товары из таблицы Products, на которые не было заказов в таблице Orders:
SELECT * FROM Products WHERE NOT EXISTS (SELECT * FROM Orders WHERE Products.Id = Orders.ProductId)

Стоит отметить, что для получения подобного результата ы могли бы использовать и опеатор IN :
SELECT * FROM Products WHERE Id NOT IN (SELECT ProductId FROM Orders)
Но поскольку при применении EXISTS не происходит выборка строк, то его использование более оптимально и эффективно, чем использование оператора IN.
std::filesystem:: exists
Checks if the given file status or path corresponds to an existing file or directory.
1) Equivalent to status_known ( s ) && s. type ( ) ! = file_type :: not_found .
2,3) Let s be a std:: filesystem :: file_status determined as if by status ( p ) or status ( p, ec ) (symlinks are followed), respectively. Returns exists ( s ) . The non-throwing overload calls ec. clear ( ) if status_known ( s ) .
Contents
[edit] Parameters
| s | — | file status to check |
| p | — | path to examine |
| ec | — | out-parameter for error reporting in the non-throwing overload |
[edit] Return value
true if the given path or file status corresponds to an existing file or directory, false otherwise.
[edit] Exceptions
Any overload not marked noexcept may throw std::bad_alloc if memory allocation fails.
2) Throws std::filesystem::filesystem_error on underlying OS API errors, constructed with p as the first path argument and the OS error code as the error code argument.
3) Sets a std:: error_code & parameter to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur.
No filesystem exception is thrown if object does not exist (use return value).
[edit] Notes
The information provided by this function is usually also provided as a byproduct of directory iteration. During directory iteration, calling exists ( * iterator ) is less efficient than exists ( iterator — > status ( ) ) .
[edit] Example
Run this code
#include #include #include #include namespace fs = std::filesystem; void demo_exists(const fs::path& p, fs::file_status s = fs::file_status{}) { std::cout p; if (fs::status_known(s) ? fs::exists(s) : fs::exists(p)) std::cout " exists\n"; else std::cout " does not exist\n"; } int main() { const fs::path sandbox{"sandbox"}; fs::create_directory(sandbox); std::ofstream{sandbox/"file"}; // create regular file fs::create_symlink("non-existing", sandbox/"symlink"); demo_exists(sandbox); for (const auto& entry : fs::directory_iterator(sandbox)) demo_exists(entry, entry.status()); // use cached status from directory entry fs::remove_all(sandbox); }
"sandbox" exists "sandbox/symlink" does not exist "sandbox/file" exists
Оператор EXISTS в SQL
Оператор EXISTS выполняет внешний запрос SQL, если внутренний запрос (подзапрос) не возвращает NULL . Принцип работа оператора EXISTS :

Этот процесс повторяется для каждой строки внешнего запроса.
Рассмотрим пример. Предположим, нам нужно вывести всех клиентов, совершивших заказ. В подзапросе мы проверяем наличие совершенного заказа в клиента (по полю customer_id) и если это подтверждается, то в результате выводим идентификатор и имя клиента.