← Все вопросы
Как отфильтровать строки по условию в SQL (WHERE)?
9
Нужно выбрать из таблицы заказов только те, где сумма больше 1000. Как отфильтровать строки по условию в SQL? Куда писать условие и какие операторы можно использовать?
2 ответа
12
✓ Принятый ответ — помог автору
Фильтр строк задаётся блоком WHERE после имени таблицы:
SELECT *
FROM orders
WHERE total > 1000;
В результат попадут только строки, для которых условие истинно.
Основные операторы сравнения:
=равно,<>или!=не равно>,<,>=,<=BETWEEN a AND b— диапазон включительноIN (...)— значение из спискаLIKE— поиск по шаблону текстаIS NULL/IS NOT NULL— проверка на пустоту
Несколько условий объединяются через AND (оба должны быть верны) и OR (хотя бы одно):
SELECT * FROM orders
WHERE total > 1000 AND status = 'paid';
Частые ошибки:
- Сравнение строк требует кавычек:
status = 'paid', а неstatus = paid. - Для NULL нельзя писать
= NULL— толькоIS NULL.total = NULLвсегда даёт «неизвестно» и строку не вернёт. - При смешивании AND и OR ставьте скобки:
WHERE a AND (b OR c), иначе приоритет операторов даст не тот результат — AND «сильнее» OR.
4
Маленькое, но важное уточнение про порядок: WHERE отбирает строки до группировки и сортировки. Поэтому в WHERE нельзя использовать агрегатные функции вроде SUM() или COUNT() — для фильтра по агрегату есть HAVING. То есть WHERE COUNT(*) > 5 выдаст ошибку, а HAVING COUNT(*) > 5 — нет.
Ваш ответ
Войдите, чтобы ответить на вопрос.