Сортировка записей через SQL запрос в NodeJS
Чтобы отсортировать строки результата, нужно
воспользоваться командой ORDER BY
,
после которой указывается имя поля для
сортировки.
Пример
Выберем из нашей таблицы users
всех
юзеров и отсортируем их по возрасту от меньшего
к большему:
let query = "SELECT * FROM users ORDER BY age";
Результат выполненного кода:
[
{ id: 1, name: 'user1', age: 23, salary: 400 },
{ id: 3, name: 'user3', age: 23, salary: 500 },
{ id: 2, name: 'user2', age: 25, salary: 500 },
{ id: 5, name: 'user5', age: 27, salary: 500 },
{ id: 6, name: 'user6', age: 28, salary: 900 },
{ id: 4, name: 'user4', age: 30, salary: 900 }
]
Пример
Поменяем порядок сортировки с помощью команды
DESC
:
let query = "SELECT * FROM users ORDER BY age DESC";
Результат выполненного кода:
[
{ id: 4, name: 'user4', age: 30, salary: 900 },
{ id: 6, name: 'user6', age: 28, salary: 900 },
{ id: 5, name: 'user5', age: 27, salary: 500 },
{ id: 2, name: 'user2', age: 25, salary: 500 },
{ id: 1, name: 'user1', age: 23, salary: 400 },
{ id: 3, name: 'user3', age: 23, salary: 500 }
]
Пример
Выберем всех юзеров с зарплатой 500
и отсортируем их по возрасту от меньшего
к большему:
let query = "SELECT * FROM users WHERE salary=500 ORDER BY age";
Результат выполненного кода:
[
{ id: 3, name: 'user3', age: 23, salary: 500 },
{ id: 2, name: 'user2', age: 25, salary: 500 },
{ id: 5, name: 'user5', age: 27, salary: 500 }
]
Пример
Можно сортировать не по одному полю, а по нескольким. Давайте для примера выберем всех юзеров и отсортируем их сначала по возрастанию возраста, а юзеров с одинаковыми возрастами отсортируем по возрастанию зарплаты:
let query = "SELECT * FROM users ORDER BY age, salary";
Результат выполненного кода:
[
{ id: 1, name: 'user1', age: 23, salary: 400 },
{ id: 3, name: 'user3', age: 23, salary: 500 },
{ id: 2, name: 'user2', age: 25, salary: 500 },
{ id: 5, name: 'user5', age: 27, salary: 500 },
{ id: 6, name: 'user6', age: 28, salary: 900 },
{ id: 4, name: 'user4', age: 30, salary: 900 }
]
Пример
Команду ORDER BY
можно комбинировать
с LIMIT
. При этом сначала нужно
писать команду сортировки, а потом - лимит.
В следующем примере сначала отсортируем
записи по возрастанию возраста, а потом возьмем
первые 3
штуки:
let query = "SELECT * FROM users ORDER BY age LIMIT 3";
Результат выполненного кода:
[
{ id: 1, name: 'user1', age: 23, salary: 400 },
{ id: 3, name: 'user3', age: 23, salary: 500 },
{ id: 2, name: 'user2', age: 25, salary: 500 }
]
Практические задачи
Достаньте всех юзеров и отсортируйте их по возрастанию зарплаты.
Достаньте всех юзеров и отсортируйте их по убыванию зарплаты.
Достаньте всех юзеров и отсортируйте их по имени.
Достаньте юзеров с зарплатой 500
и
отсортируйте их по возрасту.
Достаньте всех юзеров и отсортируйте их по имени и по зарплате.
Отсортируйте юзеров по возрастанию зарплаты
и получите первых 3
работника из результата
сортировки.
Отсортируйте юзеров по убыванию зарплаты
и получите первых 3
юзера из результата
сортировки.