TGViewer
Data Science. SQL hub Data Science. SQL hub @sqlhub · 36K subscribers
Post #2414 4.47K
SQL-задача с подвохом: почему запрос вернёт 0 строк?

Есть таблицы:


users
id | name
1 | Anna
2 | Boris
3 | Dima



orders
id | user_id
1 | 1
2 | NULL


Нужно найти пользователей, у которых нет заказов.

Кто-то пишет так:


SELECT *
FROM users
WHERE id NOT IN (
SELECT user_id
FROM orders
);


Ожидание:


Boris
Dima


Но результат может быть:


0 rows


Подвох в `NULL`.

Подзапрос возвращает:


1, NULL


А выражение:


id NOT IN (1, NULL)


превращается в логическую ловушку. SQL не может точно сказать, что id не равен NULL, потому что NULL — это неизвестность.

Правильнее так:


SELECT *
FROM users u
WHERE NOT EXISTS (
SELECT 1
FROM orders o
WHERE o.user_id = u.id
);


Правило: если в подзапросе может быть NULL, осторожнее с NOT IN. Часто безопаснее использовать NOT EXISTS.
  • 🔥 15
  • ❤ 7
  • 👍 5
More from @sqlhub
  1. Sep 21, 2026🧩 Сложная SQL-задача: симуляция DNS-кеша Есть таблица запросов: CREATE TABLE dns_requests…
  2. Sep 18, 2026🔥 PostgreSQL 19 задерживается релиз может сдвинуться на несколько недель или даже месяцев…
  3. Sep 17, 2026Участвуй во всероссийском ИТ-чемпионате МТС True Tech Champ 2026 c призовой фондом 10 250…
  4. Sep 17, 2026📌 NY Post: Anthropic - это культ Профессор Вашингтонского университета Педро Домингос в и…
  5. Sep 16, 2026Post #2492
  6. Sep 16, 2026Стать специалистом по Data Science всего за 10 недель — это реально! Если давно смотрите в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →