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 — локальная установка не требуется.
Все уроки этого курса
- Выбор столбцов и выражений
- Фильтры WHERE: операторы сравнения и логики
- ORDER BY для одного и нескольких столбцов
- Основы LIMIT, OFFSET и разбиения на страницы