← Все вопросы
Как в WHERE объединить два условия через AND и OR?
6
Я умею делать одно условие: WHERE age > 14. А как наложить сразу два? Например, чтобы возраст был больше 14 И город Москва. Или чтобы город был Москва ИЛИ Казань. Как это пишется в SQL?
2 ответа
10
✓ Принятый ответ — помог автору
Для нескольких условий в WHERE есть AND (и) и OR (или).
AND — должны выполняться ОБА условия:
SELECT * FROM students
WHERE age > 14 AND city = 'Москва';
(старше 14 И из Москвы)
OR — достаточно ХОТЯ БЫ ОДНОГО:
SELECT * FROM students
WHERE city = 'Москва' OR city = 'Казань';
(из Москвы или из Казани)
Когда смешиваешь AND и OR, ставь скобки, чтобы не запутаться в порядке:
SELECT * FROM students
WHERE age > 14 AND (city = 'Москва' OR city = 'Казань');
Здесь: возраст > 14 И при этом город — Москва или Казань. Без скобок AND «считается раньше» OR, и смысл может получиться не тот, что ты хотел.
4
Кстати, твой второй пример (city = 'Москва' OR city = 'Казань') можно записать короче через IN:
WHERE city IN ('Москва', 'Казань')
Это читается «город входит в список». Удобно, когда вариантов много.
Ваш ответ
Войдите, чтобы ответить на вопрос.