В таблице users нужно выбрать только активных пользователей из России или Казахстана. Какой WHERE соответствует требованию?
A
WHERE is_active = 1 AND country = 'RU' OR country = 'KZ'B
WHERE is_active = 1 OR (country = 'RU' OR country = 'KZ')C
WHERE is_active = 1 AND (country = 'RU' OR country = 'KZ')D
WHERE is_active = 1 AND country = 'RU' AND country = 'KZ'Правильный ответ. При смешивании
AND и OR важно использовать скобки, чтобы зафиксировать нужную логику фильтрации.Разбор
Запрос должен отобрать строки, где одновременно выполняются два условия: пользователь активен и страна входит в набор из двух значений. Поэтому правильно писать is_active = 1 AND (country = 'RU' OR country = 'KZ'). Без скобок выражение с AND и OR может трактоваться не так, как вы ожидаете, и начнёт пропускать, например, всех пользователей из 'KZ' независимо от активности.
Проверь себя · 1/3разбор после ответа
В таблице
users email хранится в разном регистре: 'Anna@mail.ru', 'anna@MAIL.ru' и т.д. Как надёжнее всего найти все записи с конкретным адресом вне зависимости от регистра?Ещё вопросы по теме «Основы SQL-запросов»
- Для отчёта по регистрациям вам нужны только `user_id` и `signup_at` из таблицы `users`. Какой запрос лучше соответствует задаче и не тянет лишние поля?
- Нужно получить 20 самых новых событий из таблицы `events` (по времени `event_time`) и показать их в выдаче сверху. Какой запрос верный?
- Вы строите выдачу «последние заказы» и используете `LIMIT 50`. Поле `created_at` не уникально (много заказов в одну секунду). Какой `ORDER BY` лучше, чтобы порядок был детерминированным?
- Что можно корректно утверждать про результат запроса `SELECT user_id FROM users LIMIT 10`, если в запросе нет `ORDER BY`?
- Нужно показать 3-ю страницу каталога товаров: по 20 товаров на страницу, сортировка по цене по возрастанию (`price`). Какой запрос корректный?
- Все вопросы по «Основы SQL-запросов» →