💡 SQL-совет, который спасает от самой “хитрой” ошибки
Одна из самых коварных ситуаций в SQL - когда ты ожидаешь данные, а запрос возвращает 0 строк, хотя “всё правильно”.
Чаще всего причина - `NOT IN` + `NULL`.
Если в подзапросе есть хотя бы один
Правило:
- ❌ Не используй `NOT IN` с подзапросами
- ✅ Используй `NOT EXISTS` или
-- ❌ ПЛОХО: NOT IN ломается из-за NULL
-- ✅ ХОРОШО: NOT EXISTS безопасен
Одна из самых коварных ситуаций в SQL - когда ты ожидаешь данные, а запрос возвращает 0 строк, хотя “всё правильно”.
Чаще всего причина - `NOT IN` + `NULL`.
Если в подзапросе есть хотя бы один
NULL, то NOT IN ломает логику и не вернёт ничего.Правило:
- ❌ Не используй `NOT IN` с подзапросами
- ✅ Используй `NOT EXISTS` или
LEFT JOIN ... IS NULL-- ❌ ПЛОХО: NOT IN ломается из-за NULL
SELECT *
FROM users u
WHERE u.id NOT IN (
SELECT user_id
FROM banned_users
);
-- ✅ ХОРОШО: NOT EXISTS безопасен
SELECT *
FROM users u
WHERE NOT EXISTS (
SELECT 1
FROM banned_users b
WHERE b.user_id = u.id
);
👍8🔥6❤2