← Все вопросы

Как отфильтровать строки по условию в SQL (WHERE)?

Задан 12 месяцев назад392 просмотров2 ответа
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';

Частые ошибки:

  1. Сравнение строк требует кавычек: status = 'paid', а не status = paid.
  2. Для NULL нельзя писать = NULL — только IS NULL. total = NULL всегда даёт «неизвестно» и строку не вернёт.
  3. При смешивании AND и OR ставьте скобки: WHERE a AND (b OR c), иначе приоритет операторов даст не тот результат — AND «сильнее» OR.
4

Маленькое, но важное уточнение про порядок: WHERE отбирает строки до группировки и сортировки. Поэтому в WHERE нельзя использовать агрегатные функции вроде SUM() или COUNT() — для фильтра по агрегату есть HAVING. То есть WHERE COUNT(*) > 5 выдаст ошибку, а HAVING COUNT(*) > 5 — нет.

Ваш ответ

Войдите, чтобы ответить на вопрос.