Сортирање резултата
Коришћењем наредбе СЕЛЕЦТ, резултати су враћени истим редоследом када су записи додани у базу података. Ово је подразумевани редослед сортирања. У овом одељку ћемо погледати како можемо да сортирамо резултате упита. Сортирање је једноставно преуређивање резултата нашег упита на одређени начин. Сортирање се може извршити на једној колони или на више колона. То се може урадити на бројевима, стринговима као и типовима података датума.
Шта је ОРДЕР БИ у МиСКЛ-у?
МиСКЛ ОРДЕР БИ се користи заједно са СЕЛЕЦТ упитом за редовно сортирање података. Клаузула МиСКЛ ОРДЕР БИ користи се за сортирање скупова резултата упита у растућем или опадајућем редоследу.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
ОВДЕ
- „СЕЛЕЦТ статемент…“ је уобичајени упит за одабир
- „|“ представља алтернативе
- „[ВХЕРЕ услов | ГРОУП БИ` име_поља поља 'ХАВИНГ цондитион “ је опционални услов који се користи за филтрирање скупова резултата упита.
- „ОРДЕР БИ“ врши сортирање скупа резултата упита
- „[АСЦ | ДЕСЦ]“ је кључна реч која се користи за сортирање скупова резултата у растућем или опадајућем редоследу. Напомена АСЦ се користи као подразумевана вредност.
Шта су ДЕСЦ и АСЦ кључне речи?
|
|
Користи се за сортирање резултата упита у стилу од врха до дна. |
Користи се за сортирање резултата упита у стилу од дна до врха |
Када радите на типовима података датума, најранији датум је приказан на врху листе. |
. Када радите на типовима датума, најновији датум је приказан на врху листе. |
Када радите са нумеричким типовима података, најниже вредности су приказане на врху листе. |
Када радите са нумеричким типовима података, највише вредности су приказане на врху скупа резултата упита. |
Када радите са типовима података низа, скуп резултата упита се сортира од оних који почињу словом А, па све до слова З. |
Када се ради са типовима података низа, скуп резултата упита се сортира од оних који почињу словом З све до слова А. |
И кључне речи СКЛ ДЕСЦ и АСЦ користе се заједно у вези са наредбом СЕЛЕЦТ и клаузулом МиСКЛ ОРДЕР БИ.
Синтакса ДЕСЦ и АСЦ
Кључна реч СКЛ ДЕСЦ за сортирање има следећу основну синтаксу.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
ОВДЕ
- СЕЛЕЦТ {ПољеНаме (а) | *} ФРОМ таблеНаме (с) је израз који садржи поља и табеле (е) из којих се добија скуп резултата.
- [ВХЕРЕ услов] није обавезан, али се може користити за филтрирање података према датом услову.
- НАРУЧИ ПО Назив поља (поља) је обавезно и поље је на којем ће се извршити сортирање. Кључна реч МиСКЛ ДЕСЦ одређује да сортирање треба да буде у опадајућем редоследу.
- [ЛИМИТ] није обавезно, али се може користити за ограничавање броја резултата враћених из скупа резултата упита.
Примери:
Погледајмо сада практични пример -
SELECT * FROM members;
Извршавање горње скрипте у МиСКЛ радном окружењу против мифликдб даје нам следеће резултате приказане у наставку.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
Претпоставимо да одељење за маркетинг жели да се детаљи о члановима поређају у падајућем редоследу према датуму рођења. То ће им помоћи да благовремено пошаљу честитке за рођендан. Наведени списак можемо добити извршавањем упита као у наставку -
SELECT * FROM members ORDER BY date_of_birth DESC;
Извршавање горње скрипте у МиСКЛ радном окружењу против мифликдб даје нам следеће резултате приказане у наставку.
Исти упит у растућем редоследу
СЕЛЕЦТ * ФРОМ чланова НАРУЧИ ПО датуму_рођења АСЦ
Напомена: НУЛЛ вредности значе да нема вредности (не нула или празан низ). Посматрајте начин на који су сортирани.
Још примера
Размотримо следећу скрипту која наводи све записе чланова.
SELECT * FROM `members`;
Извршавање горње скрипте даје следеће резултате приказане у наставку.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Претпоставимо да желимо да добијемо листу која сортира резултат упита помоћу поља за пол, користили бисмо скрипту приказану доле.
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Чланови „Женски“ су прво приказани, а следе „Мушки“ чланови, то је зато што када се користи клаузула ОРДЕР БИ ДЕСЦ без навођења АСЦ или МиСКЛ ДЕСЦ кључне речи, МиСКЛ је подразумевано сортирао резултат упита у растућем редоследу.
Погледајмо сада пример који врши сортирање помоћу два ступца ; прва се подразумевано сортира у растућем редоследу , док се друга колона сортира у опадајућем редоследу.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Извршавање горње скрипте у МиСКЛ радном окружењу против мифликдб даје следеће резултате.
Колона рода је подразумевано сортирана у растућем редоследу, док је колона са датумом рођења експлицитно сортирана у опадајућем редоследу
Зашто можемо да користимо ДЕСЦ и АСЦ?
Претпоставимо да желимо да одштампамо историју плаћања за члана видеотеке како бисмо помогли у одговарању на упите са рецепције, не би ли било логичније да се исплате исписују у опадајућем хронолошком редоследу почев од недавне уплате до раније уплате?
ДЕСЦ у СКЛ-у је кључна реч која постаје корисна у таквим ситуацијама. Можемо написати упит којим ћемо сортирати листу у опадајућем редоследу користећи датум плаћања.
Претпоставимо да одељење за маркетинг жели да добије списак филмова по категоријама помоћу којих чланови могу да одлуче који ће филмови бити доступни у библиотеци приликом изнајмљивања филмова, не би ли било логичније погледати сортирање имена и наслова категорија филмова у растућем чланови могу брзо потражити информације са листе?
Кључна реч АСЦ добро дође у таквим ситуацијама; листу филмова можемо сортирати према називу категорије и наслову филма у растућем редоследу.
Резиме
- Сортирање резултата упита је преуређивање редова враћених из скупа резултата упита у растућем или силазном редоследу.
- Кључна реч ДЕСЦ у СКЛ-у се користи за сортирање резултата упита у опадајућем редоследу.
- Кључна реч АСЦ користи се за сортирање резултата упита у растућем редоследу.
- И ДЕСЦ и АСЦ раде заједно са кључном речи ОРДЕР БИ. Такође се могу користити у комбинацији са другим кључним речима као што су клаузула ВХЕРЕ и ЛИМИТ
- Подразумевано за ОРДЕР БИ када ништа није изричито наведено је АСЦ.