Какое условие является always false для флага is_paying, который принимает только 0 или 1?
A
is_paying = 1 OR is_paying = 0B
NOT (is_paying = 1)C
is_paying = 1D
is_paying = 1 AND is_paying = 0Правильный ответ. Требование
is_paying = 1 AND is_paying = 0 является противоречием и потому always false.Разбор
Флаг не может одновременно быть равен 1 и 0, поэтому is_paying = 1 AND is_paying = 0 никогда не выполнится. Такие условия иногда появляются при неверной склейке фильтров или при попытке одновременно потребовать два взаимоисключающих сегмента. Распознавание always false помогает понять, почему запрос возвращает пустой результат.
Проверь себя · 1/3разбор после ответа
В форме регистрации есть два флага:
has_email = 1 и has_phone = 1. Что означает фильтр NOT (has_email = 1) AND NOT (has_phone = 1)?Ещё вопросы по теме «Булева логика и фильтры»
- Какому выражению со скобками эквивалентно условие `is_new = 1 OR is_paying = 1 AND has_coupon = 1`, если `AND` выполняется раньше `OR`?
- В фильтре написали `country = 'RU' AND device = 'ios' OR device = 'android'`. Какой набор строк реально пройдёт фильтр при стандартном приоритете, где `AND` сильнее `OR`?
- Какое условие эквивалентно `NOT (is_paying = 1 AND has_subscription = 1)` по правилу `De Morgan`?
- Вы хотите выбрать строки, которые не относятся к `country = 'RU' OR country = 'KZ'`. Какое выражение соответствует `NOT (country = 'RU' OR country = 'KZ')` по правилу `De Morgan`?
- В таблице пользователей есть флаги `has_email_optin` и `has_push_optin` (0 или 1). Нужно выбрать пользователей, у которых включён ровно один канал (email или push, но не оба). Какое условие корректно?
- Все вопросы по «Булева логика и фильтры» →