← Все вопросы
Как объединить несколько условий в WHERE (AND, OR, IN, BETWEEN, LIKE)?
13
Знаю только WHERE col = значение. А как написать «город Москва И сумма больше 1000», или «статус один из нескольких», или «дата в диапазоне», или «имя начинается на А»? Подскажите операторы.
2 ответа
21
Вот основной набор для WHERE:
SELECT * FROM orders
WHERE city = 'Москва' AND amount > 1000; -- оба условия
SELECT * FROM orders
WHERE status IN ('paid', 'shipped', 'done'); -- одно из списка (короче чем куча OR)
SELECT * FROM orders
WHERE amount BETWEEN 500 AND 1500; -- диапазон, ВКЛЮЧИТЕЛЬНО оба края
SELECT * FROM users
WHERE name LIKE 'А%'; -- начинается на А (% — любые символы)
AND— нужны оба условия,OR— хотя бы одно.- При смешивании
AND/ORставь скобки, иначе логика сломается:WHERE (a OR b) AND c. - В
LIKE:%— любое число символов,_— ровно один символ.'%оск%'— содержит «оск».
Кристина Киселёва LIKE по-умолчанию регистрозависимый? — зависит от СУБД, в PostgreSQL да, есть ILIKE для игнора регистра · 11 месяцев назад
oleg kisil про скобки при AND/OR — больная тема, спасибо что напомнили · 11 месяцев назад
7
IN (...) вместо длинной цепочки OR — самый частый лайфхак.
Ваш ответ
Войдите, чтобы ответить на вопрос.