Есть условия is_paying = 1 и is_active = 1. Как правильно интерпретировать фильтр NOT (is_paying = 1 AND is_active = 1)?

AОставляет только строки, где is_paying = 1 AND is_active = 1.
BОставляет только строки, где NOT (is_paying = 1) AND NOT (is_active = 1).
CОставляет строки, где is_paying = 1 OR is_active = 1.
DИсключает только строки, где выполнены оба условия одновременно; все остальные проходят.
Правильный ответ. Отрицание AND исключает совместное выполнение, но не требует, чтобы оба условия были ложными.

Разбор

Условие NOT (A AND B) означает «не верно, что одновременно A и B». Это включает три случая: A ложь и B истина, A истина и B ложь, A ложь и B ложь. Ошибка — заменить это на NOT A AND NOT B, что соответствует более строгому «ни один из двух».

Проверь себя · 1/3разбор после ответа
Условие в фильтре записали как NOT (NOT (is_test_user = 1)). Какое более простое условие ему эквивалентно?
Открыть Карьерник в Telegram

Ещё вопросы по теме «Булева логика и фильтры»