В фильтре написали country = 'RU' AND device = 'ios' OR device = 'android'. Какой набор строк реально пройдёт фильтр при стандартном приоритете, где AND сильнее OR?

AТолько строки, где выполняется country = 'RU' AND (device = 'ios' OR device = 'android')
BСтроки, где (country = 'RU' AND device = 'ios') OR device = 'android'
CТолько строки, где country = 'RU' AND device = 'android'
DСтроки, где country = 'RU' OR (device = 'ios' AND device = 'android')
Правильный ответ. Без скобок device = 'android' становится отдельной веткой через OR и не зависит от условия по стране.

Разбор

Сначала вычисляется часть country = 'RU' AND device = 'ios'. Затем результат объединяется с device = 'android' через OR, поэтому все android-строки попадают в выборку независимо от страны. Это типичная ошибка приоритета: хотели country = 'RU' AND (device = 'ios' OR device = 'android'), но забыли скобки. Без скобок AND связывается раньше OR, и второе устройство «отрывается» от страны.

Проверь себя · 1/3разбор после ответа
Какое условие фильтра тождественно ложно (никогда не выполнится) для флага is_paying, который принимает только 0 или 1?
Открыть Карьерник в Telegram

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