В фильтре написали 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' (то есть device = 'android' из любой страны).
CТолько строки, где country = 'RU' AND device = 'android'.
DСтроки, где country = 'RU' OR (device = 'ios' AND device = 'android').
Правильный ответ. Без скобок device = 'android' становится отдельной веткой через OR и не зависит от country = 'RU'.

Разбор

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

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

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