Флаг is_active принимает только 0 или 1. Какое условие истинно для любой строки и не отфильтрует ни одной?
A
is_active = 1 AND is_active = 0B
NOT (is_active = 1) AND is_active = 1C
is_active = 1 OR is_active = 0D
is_active = 1 AND NOT (is_active = 0)Правильный ответ. Если флаг может быть только 0 или 1, то
is_active = 1 OR is_active = 0 истинно для любой строки и является тавтологией.Разбор
Это пример тавтологии: вы перечислили все возможные значения флага и соединили их OR. Такой фильтр часто появляется случайно, например при ошибочном объединении условий. На собеседовании полезно уметь быстро распознавать всегда истинные условия, потому что они маскируют ошибки сегментации.
Можно заниматься бесплатно
Готовим вопросы…
Три вопроса по теме этой страницы, с объяснениями.
Ещё вопросы по теме «Булева логика и фильтры»
- Какому выражению со скобками эквивалентно условие `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)` по правилу де Моргана? Выберите запись через `OR`.
- Вы хотите выбрать строки, которые не относятся к `country = 'RU' OR country = 'KZ'`. Какое выражение соответствует `NOT (country = 'RU' OR country = 'KZ')` по правилу де Моргана?
- В таблице пользователей есть флаги `has_email_optin` и `has_push_optin` (0 или 1). Нужно выбрать пользователей, у которых включён ровно один канал (email или push, но не оба). Какое условие корректно?
- Все вопросы по «Булева логика и фильтры» →