0Pricing
SQL Academy · Урок

ORDER BY для одного и нескольких столбцов

Сортируйте результаты по возрастанию или убыванию, по нескольким столбцам и управляйте расположением NULL с помощью NULLS FIRST / NULLS LAST

«ORDER BY для одного и нескольких столбцов» — бесплатный урок SQL Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.

Зачем нужен ORDER BY

Таблица SQL представляет собой неупорядоченное множество. Без ORDER BY база данных может вернуть строки в любом порядке, и этот порядок может меняться от запуска к запуску. Если порядок важен в пользовательском интерфейсе или отчёте, задавайте сортировку явно.

Сортировка по одному столбцу

По умолчанию используется сортировка по возрастанию:

SELECT id, email FROM users ORDER BY created_at;       -- oldest first
SELECT id, email FROM users ORDER BY created_at ASC;
SELECT id, email FROM users ORDER BY created_at DESC;  -- newest first

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

Перечисляйте столбцы в порядке приоритета. Второй столбец устраняет совпадения по первому:

SELECT first_name, last_name, age
FROM users
ORDER BY last_name ASC, first_name ASC, age DESC;

Сортировка по выражению

Сортировать можно по любому выражению:

SELECT email, full_name
FROM users
ORDER BY LENGTH(email) DESC, email ASC;

Сортировка по псевдониму или позиции

Можно обращаться к псевдониму из списка SELECT или к его позиции, начиная с 1:

SELECT id, total * 0.9 AS discounted
FROM orders
ORDER BY discounted DESC;     -- by alias

SELECT id, total
FROM orders
ORDER BY 2 DESC;               -- by position (avoid in code — fragile)

NULLS FIRST / NULLS LAST

Управляйте расположением NULL:

-- Default: NULLs LAST when ASC, FIRST when DESC
SELECT * FROM users ORDER BY last_login_at DESC NULLS LAST;
SELECT * FROM users ORDER BY last_login_at ASC  NULLS FIRST;

Стабильная сортировка и дополнительные ключи

Если несколько строк имеют одинаковое значение ключа сортировки, база данных может вернуть их в любом порядке. Добавьте первичный ключ как дополнительный ключ сортировки, чтобы результаты были детерминированными:

SELECT * FROM orders
ORDER BY created_at DESC, id DESC;

ORDER BY и индексы

Если для столбца или столбцов ORDER BY существует индекс, база данных может читать строки по порядку без отдельного шага сортировки.

-- With index on created_at DESC, this can use the index directly:
SELECT * FROM events ORDER BY created_at DESC LIMIT 100;

CASE в ORDER BY

Пользовательская сортировка с помощью CASE:

-- Show priority orders first:
SELECT * FROM orders
ORDER BY
  CASE status
    WHEN 'urgent'   THEN 0
    WHEN 'normal'   THEN 1
    ELSE 2
  END,
  created_at DESC;

ORDER BY выполняется после WHERE

ORDER BY работает с результатом WHERE/GROUP BY/HAVING. Сначала выполняется фильтрация, затем сортировка.

Не сортируйте огромные таблицы без LIMIT

Сортировка результата из миллиарда строк требует больших затрат. Если Вам нужны только первые N строк, добавьте LIMIT — планировщик может выбрать стратегию Top-N.

SELECT * FROM events ORDER BY created_at DESC LIMIT 50;

Итоги

ORDER BY делает результаты детерминированными.

  • ASC / DESC для каждого столбца
  • Несколько столбцов для разрешения совпадений
  • NULLS FIRST / LAST при необходимости
  • Всегда сочетайте большую сортировку с LIMIT

Быстрая проверка

Какое направление сортировки используется в SQL по умолчанию?

Часто задаваемые вопросы

Урок «ORDER BY для одного и нескольких столбцов» бесплатный?

Да — полный текст урока «ORDER BY для одного и нескольких столбцов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.

Чему я научусь в уроке «ORDER BY для одного и нескольких столбцов»?

Сортируйте результаты по возрастанию или убыванию, по нескольким столбцам и управляйте расположением NULL с помощью NULLS FIRST / NULLS LAST Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SQL Academy?

Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «ORDER BY для одного и нескольких столбцов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SQL Academy?

Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Выбор столбцов и выражений
  2. Фильтры WHERE: операторы сравнения и логики
  3. ORDER BY для одного и нескольких столбцов
  4. Основы LIMIT, OFFSET и разбиения на страницы
← Назад к SQL Academy