Выбор ответа Junior SELECT и фильтрация обновлено
Приоритет AND и OR
Вопрос
Какому условию эквивалентно WHERE city = 'Москва' OR city = 'Казань' AND age > 30?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: city = 'Москва' OR (city = 'Казань' AND age 30). AND связывает сильнее, чем OR, как умножение сильнее сложения.
Варианты ответа
(city = 'Москва' OR city = 'Казань') AND age > 30- Условие неоднозначно, PostgreSQL выдаст ошибку
city = 'Москва' OR (city = 'Казань' AND age > 30)правильный ответ- Зависит от порядка колонок в таблице
Разбор
AND связывает сильнее, чем OR, как умножение сильнее сложения. Поэтому москвичи попадут в результат любого возраста, а из Казани только старше 30. Если нужны обе столицы старше 30, нужны скобки. Ошибки нет: приоритет определён однозначно и от таблицы не зависит.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.