Проблем:
Трябва да покажете записи от дадена таблица, сортирани по две колони.
Пример:
Нашата база данни има таблица с име employee
със следните колони:id
, first_name
, last_name
и salary
.
id | first_name | фамилно_име | заплата |
---|---|---|---|
1 | Лиза | Улман | 3000 |
2 | Ада | Мюлер | 2400 |
3 | Томас | Зелено | 2400 |
4 | Майкъл | Мюлер | 3000 |
5 | Мери | Зелено | 2400 |
Нека покажем цялата информация за всеки служител, но първо да сортираме записите според заплатата в низходящ ред, а след това по фамилия във възходящ ред.
Решение:
SELECT id, first_name, last_name, salary FROM employee ORDER BY salary DESC, last_name;
Тази заявка връща сортирани записи според две колони:заплата и фамилно_име .
id | first_name | фамилно_име | заплата |
---|---|---|---|
4 | Майкъл | М uller | 3000 |
1 | Лиза | U лман | 3000 |
3 | Томас | G реен | 2400 |
5 | Мери | G реен | 2400 |
2 | Ада | М uller | 2400 |
Дискусия:
Ако искате да изберете записи от таблица, но искате да ги видите сортирани по две колони, можете да го направите с ORDER BY
. Тази клауза идва в края на вашата SQL заявка.
След ORDER BY
ключова дума, добавете името на колоната, по която искате първо да сортирате записи (в нашия пример заплата). След това след запетая добавете втората колона (в нашия пример last_name
). Можете да промените реда на сортиране (възходящ или низходящ) отделно за всяка колона. Ако искате да използвате възходящ (от нисък към висок) ред, можете да използвате ASC
ключова дума; тази ключова дума обаче не е задължителна, тъй като това е редът по подразбиране, когато не е посочена нито една. Ако искате да използвате низходящ ред, поставете DESC
ключова дума след съответната колона (в примера използвахме низходящ ред за salary
колона).
В нашия пример първо сортирахме резултата по заплата в низходящ ред (по-високи заплати към по-ниски), а след това по фамилия във възходящ ред в рамките на тези вече сортирани записи.