Проблем:
Искате да сортирате резултата от SQL заявка във възходящ или низходящ ред.
Пример:
Нашата база данни има таблица с име salary_information
с данни в колоните id
, first_name
, last_name
и monthly_earnings
. Искаме да сортираме служителите по техните monthly_earnings
в низходящ ред.
id | first_name | фамилно_име | месечни_доходи |
---|---|---|---|
1 | Калвин | Риос | 3500 |
2 | Алан | Патерсън | 4000 |
3 | Кърт | Евънс | 2300 |
4 | Алекс | Уоткинс | 5500 |
Решение:
Ще използваме ORDER BY
клауза. Ето заявката:
Ще използваме функцията CURRENT_DATE
за да получите текущата дата:
SELECT first_name, last_name, monthly_earnings FROM salary_information ORDER BY monthly_earnings DESC
Ето резултата от заявката:
first_name | фамилно_име | месечни_доходи |
---|---|---|
Алекс | Уоткинс | 5500 |
Алан | Патерсън | 4000 |
Калвин | Риос | 3500 |
Кърт | Евънс | 2300 |
Сега можем да видим, че Алекс Уоткинс е първи в списъка, което означава, че той печели най-много пари.
Дискусия:
Използвайте ORDER BY
клауза, ако искате да сортирате набора от данни във възходящ или низходящ ред. Синтаксисът за ORDER BY
клаузата е както следва:
SELECT col1, col2, … FROM table ORDER BY col1, col2, … ASC|DESC;
В горното, ASC|DESC
означава, че трябва да изберете или ключовата дума ASC
(възходящ) или DESC
(надолу), за да подредите набора от данни по желания от вас начин.
Освен сортиране по числови колони, можете да сортирате и по текстови колони. ORDER BY
клауза ще сортира текстовите колони по азбучен ред.
Вместо името на колоната, можете също да използвате позицията на колоната, която брои отляво. Така че, в нашия пример, вместо да пишете:
ORDER BY monthly_earnings DESC
можете също да напишете:
ORDER BY 3 DESC
Ако искате да сортирате таблицата от примера по first_name
колона в азбучен (възходящ) ред, можете да използвате следната заявка:
SELECT first_name, last_name, monthly_earnings FROM salary_information ORDER BY first_name ASC
Също така си струва да се отбележи, че можете да сортирате по няколко колони. Това е полезно, когато някои стойности в дадена колона се повтарят и имате нужда от допълнително сортиране. В този случай разделете имената на колоните със запетаи в клаузата ORDER BY.
Можете дори да сортирате във възходящ ред по една колона и в низходящ ред по друга. Следното илюстрира синтаксиса на тази комбинация:
ORDER BY Col1 ASC, Col2 DESC;
Ако пропуснете ASC
или DESC
ключова дума, по подразбиране се извършва възходящо сортиране.