[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-sql-chto-delaet-operator-exists":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},858,"chto-delaet-operator-exists",25,"sql","SQL","🗃️","Что делает оператор EXISTS?","`EXISTS` принимает подзапрос в качестве аргумента и возвращает `TRUE`, если подзапрос возвращает хотя бы одну строку, и `FALSE`, если подзапрос не возвращает ни одной строки. В отличие от `IN`, оператор `EXISTS` не загружает весь результат подзапроса — он останавливается, как только найдена первая совпадающая строка, что делает его эффективным для больших наборов данных.\n\n```sql\n-- Найти пользователей, у которых есть хотя бы один заказ\nSELECT u.name\nFROM users u\nWHERE EXISTS (\n    SELECT 1 FROM orders o WHERE o.user_id = u.id\n);\n\n-- Противоположное: пользователи без заказов\nSELECT u.name\nFROM users u\nWHERE NOT EXISTS (\n    SELECT 1 FROM orders o WHERE o.user_id = u.id\n);\n```\n\n`EXISTS` работает как коррелированный подзапрос — для каждой строки внешнего запроса выполняется внутренний подзапрос. Значение `SELECT` в подзапросе не имеет значения (обычно пишут `SELECT 1` или `SELECT *`), поскольку `EXISTS` проверяет только факт наличия строк, а не их содержимое.\n\n> **На собеседовании:** важно объяснить, что `EXISTS` останавливается при первом совпадении и поэтому часто эффективнее `IN`. Частая ошибка — не знать разницу между `EXISTS` и `IN` при наличии `NULL`-значений в подзапросе.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Что делает оператор EXISTS? — Gymterview","`EXISTS` принимает подзапрос в качестве аргумента и возвращает `TRUE`, если подзапрос возвращает хотя бы одну строку, и `FALSE`, если подзапрос не возвращает ни","`EXISTS` принимает подзапрос в качестве аргумента и возвращает `TRUE`, если подзапрос возвращает хотя бы одну строку, и ",[7,13],"`EXISTS` принимает подзапрос в качестве аргумента и возвращает `TRUE`, если подзапрос возвращает хотя бы одну строку, и `FALSE`, если подзапрос не возвращает ни одной строки. В отличие от `IN`, оператор `EXISTS` не загружает весь результат подзапроса — он останавливается, как только найдена первая с",true]