Как в SQL отсортировать результаты запроса по возрастанию (от меньшего к большему)?

Ответ

В SQL для сортировки результатов по возрастанию используется оператор ORDER BY с модификатором ASC (ascending). Поскольку ASC является порядком по умолчанию, его часто опускают.

Синтаксис:

SELECT column1, column2
FROM table_name
ORDER BY column1 ASC; -- ASC можно не писать

Практические примеры:

  1. Сортировка по одному столбцу:
    -- Вывести сотрудников, отсортированных по зарплате от меньшей к большей
    SELECT name, salary FROM employees ORDER BY salary;
  2. Сортировка по нескольким столбцам:
    -- Сначала по отделу (по алфавиту A-Z), затем по зарплате (по возрастанию)
    SELECT department, name, salary
    FROM employees
    ORDER BY department, salary;
  3. Сортировка по убыванию (DESC): Для обратного порядка используется DESC.
    SELECT name, salary FROM employees ORDER BY salary DESC;
  4. Сортировка по выражению или порядковому номеру столбца:

    -- По выражению
    SELECT name, salary, salary * 1.1 as projected_salary
    FROM employees
    ORDER BY projected_salary;
    
    -- По номеру столбца в SELECT (не рекомендуется для долгосрочной поддержки)
    SELECT name, salary FROM employees ORDER BY 2; -- Сортировка по salary (2-й столбец)

Почему ORDER BY важен? Без него база данных не гарантирует никакого конкретного порядка возвращаемых строк, даже если кажется, что данные идут по ключу.

Ответ 18+ 🔞

Да ты посмотри, какой народ-то безмозглый, блядь! Сидят, думают, что если они SELECT сделали, то данные им придут аккуратненько, по порядку. Да хуй там плавал, ёпта!

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

Ну ладно, допустим, тебе надо по возрастанию. Берёшь и пишешь:

SELECT name, salary FROM employees ORDER BY salary;

Всё, пиздец. Работает. Потому что ASC — это порядок по умолчанию, его можно даже не писать, экономия мазоли на клаве, блядь.

А если тебе надо по нескольким полям? Ну, например, сначала отделы по алфавиту, а внутри отдела уже по зарплате? Да не вопрос, сука!

SELECT department, name, salary
FROM employees
ORDER BY department, salary;

Сначала department от А до Я, а потом уже salary от меньшей к большей. Логично же, как дважды два, блядь.

А если наоборот, с конца? С самой большой зарплаты? Тогда, друг мой, тебе в помощь DESC — descending, ёбта. Всё наизнанку выворачивает.

SELECT name, salary FROM employees ORDER BY salary DESC;

Вот и вся магия, в рот меня чих-пых!

Можно ещё, конечно, по вычисляемому полю сортировать или, что совсем уж для ленивых, по номеру столбца в запросе. Но это, блядь, как ходить по охуенно тонкому льду — сегодня работает, а завтра кто-то SELECT перепишет, столбцы местами поменяет, и твой запрос начнёт сортировать по имени вместо зарплаты. Пиздец и развод, одним словом.

-- Так делать — мудя полная. Работает, но потом сам от себя охуеешь.
SELECT name, salary FROM employees ORDER BY 2;

Короче, запомни, чувак: хочешь предсказуемый порядок — явно указывай ORDER BY. А иначе терпения ноль ебать, когда в продакшене данные пойдут вразнобой.