Есть условия 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Исключает строки, где оба условия истинны одновременно, и оставляет три остальные комбинации значений флагов
DОставляет строки, где истинно is_paying = 1 OR is_active = 1, и исключает только полное отсутствие двух флагов
Правильный ответ. Отрицание AND исключает совместное выполнение, но не требует, чтобы оба условия были ложными.

Разбор

Условие NOT (A AND B) означает «не верно, что A и B одновременно». Это включает три случая: A ложно и B истинно, A истинно и B ложно, A ложно и B ложно. Частая ошибка — заменить это на NOT A AND NOT B, что соответствует более строгому «ни одно из условий не выполнено». По закону де Моргана NOT (A AND B) = NOT A OR NOT B.

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

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