← Назад к вопросам

Что такое ORDER BY?

1.0 Junior🔥 111 комментариев
#Базы данных и SQL

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

ORDER BY в SQL: сортировка данных

ORDER BY — это SQL-клаузула, которая используется для сортировки результатов запроса по одному или нескольким столбцам в определённом порядке. Это один из самых часто используемых элементов SQL и критически важен для QA-инженера при проверке корректности вывода данных.

Базовый синтаксис

Простая сортировка:

SELECT * FROM users ORDER BY name ASC;

Объяснение:

  • Выбирает все пользователей из таблицы users
  • Сортирует результаты по столбцу name в возрастающем порядке (A-Z)
  • ASC — это значение по умолчанию, можно опустить

Направления сортировки

1. ASC (Ascending) — возрастание

  • Сортирует от меньшего к большему
  • Для текста: A → Z (алфавитный порядок)
  • Для чисел: 1 → 100 (от малого к большому)
  • Для дат: ранние даты → поздние даты
  • Пример: SELECT * FROM products ORDER BY price ASC; (от дешёвого к дорогому)

2. DESC (Descending) — убывание

  • Сортирует от большего к меньшему
  • Для текста: Z → A (обратный алфавитный порядок)
  • Для чисел: 100 → 1 (от большого к малому)
  • Для дат: поздние даты → ранние даты
  • Пример: SELECT * FROM products ORDER BY price DESC; (от дорогого к дешёвому)

Сортировка по нескольким столбцам

Первичная и вторичная сортировка:

SELECT * FROM employees 
ORDER BY department ASC, salary DESC;

Что происходит:

  • Сначала сортирует по department в алфавитном порядке
  • Внутри каждого department сортирует по salary от большего к меньшему
  • Это позволяет видеть все отделы упорядоченно с самыми высокооплачиваемыми сотрудниками сверху в каждом отделе

Пример результатов:

  • Sales, John (5000)
  • Sales, Mary (4000)
  • Marketing, Tom (4500)
  • Marketing, Jane (3500)

Сортировка по вычисляемым столбцам

SELECT product_name, price * quantity AS total 
FROM orders 
ORDER BY price * quantity DESC;

Можно сортировать и по выражениям, а не только по существующим столбцам.

Практические примеры для QA

Пример 1: Сортировка по дате создания

SELECT id, title, created_at FROM articles 
ORDER BY created_at DESC;
  • Показывает самые свежие статьи первыми
  • Критично для проверки ленты новостей

Пример 2: Поиск топ продаж

SELECT product_name, sales_count FROM products 
ORDER BY sales_count DESC LIMIT 10;
  • Показывает 10 самых продаваемых товаров
  • Используется для проверки рейтингов

Пример 3: Проверка невидимых записей

SELECT * FROM users ORDER BY created_at ASC;
  • Находит самые старые записи
  • Помогает обнаружить баги с сортировкой или фильтрацией

Важное для QA при тестировании

Что проверять в приложениях:

  1. Корректность сортировки

    • Числа: 1, 2, 10, 100 (не 1, 10, 100, 2)
    • Текст: с учётом регистра и локали
    • Даты: с учётом временных зон
  2. NULL значения

    • Как база данных обрабатывает NULL при сортировке
    • Обычно NULL идут в начало или конец результата
  3. Производительность

    • Сортировка больших таблиц может быть медленной
    • Индексы помогают ускорить ORDER BY
    • QA должен проверять время ответа при больших объёмах
  4. Множественная сортировка

    • Убедиться, что первичная и вторичная сортировка работают корректно
    • Проверить порядок вложенности
  5. Граничные случаи

    • Пустые таблицы
    • Таблицы с одной записью
    • Таблицы с одинаковыми значениями

Общие ошибки, которые находит QA

Ошибка 1: Неправильная сортировка чисел как текста

Вместо: 1, 2, 3, 10, 20 (правильно)
Получаем: 1, 10, 2, 20, 3 (как текст)

Ошибка 2: Сортировка игнорирует case sensitivity

Ожидаемо: Apple, apple, Zebra, zebra
Получено: apple, Apple, zebra, Zebra

Ошибка 3: Дефектная сортировка после фильтрации

  • Применяется WHERE, но ORDER BY работает неправильно

Заключение

ORDER BY — это фундаментальный инструмент SQL для упорядочивания данных. Для QA-инженера понимание ORDER BY критично при проверке корректности вывода данных в приложении, особенно при работе с лентами, рейтингами, историями и другими отсортированными списками.