Sortiranje rezultata
Korištenjem naredbe SELECT rezultati su vraćeni istim redoslijedom kad su zapisi dodani u bazu podataka. Ovo je zadani redoslijed sortiranja. U ovom ćemo odjeljku pogledati kako možemo razvrstati rezultate upita. Sortiranje je jednostavno preuređivanje rezultata našeg upita na određeni način. Sortiranje se može izvesti na jednom stupcu ili na više stupaca. To se može učiniti na brojevima, nizovima kao i tipovima podataka datuma.
Što je ORDER BY u MySQL-u?
MySQL ORDER BY koristi se zajedno s upitom SELECT za uredno sortiranje podataka. Klauzula MySQL ORDER BY koristi se za sortiranje skupova rezultata upita u rastućem ili silaznom redoslijedu.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
OVDJE
- "SELECT statement ..." uobičajeni je upit za odabir
- "|" predstavlja alternative
- "[WHERE uvjet | GROUP BY` ime_na polja 'HAVING uvjet " je neobavezni uvjet koji se koristi za filtriranje skupova rezultata upita.
- "ORDER BY" izvodi sortiranje skupa rezultata upita
- "[ASC | DESC]" je ključna riječ koja se koristi za sortiranje skupova rezultata u uzlaznom ili silaznom redoslijedu. Napomena ASC se koristi kao zadani.
Što su DESC i ASC ključne riječi?
ASC je kratki oblik za uzlazno |
MySQL DESC je kratki obrazac za silazak |
Koristi se za sortiranje rezultata upita u stilu od vrha do dna. |
Koristi se za sortiranje rezultata upita u stilu od dna do vrha |
Kada radite na vrstama podataka datuma, najraniji datum prikazan je na vrhu popisa. |
. Kada radite na vrstama datuma, najnoviji datum prikazuje se na vrhu popisa. |
Pri radu s numeričkim vrstama podataka, najniže vrijednosti prikazane su na vrhu popisa. |
Pri radu s numeričkim vrstama podataka, najviše vrijednosti prikazuju se na vrhu skupa rezultata upita. |
Kada se radi s vrstama podataka niza, skup rezultata upita se sortira od onih koji počinju slovom A, pa sve do slova Z. |
Kada se radi s vrstama podataka niza, skup rezultata upita se sortira od onih koji počinju slovom Z sve do slova A. |
I ključne riječi SQL DESC i ASC koriste se zajedno u kombinaciji s naredbom SELECT i klauzulom MySQL ORDER BY.
Sintaksa DESC i ASC
Ključna riječ sortiranja SQL DESC ima sljedeću osnovnu sintaksu.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
OVDJE
- ODABERITE {PoljaName |. | *} FROM tableName (s) je izjava koja sadrži polja i tablice (table) iz kojih će se dobiti rezultat.
- [WHERE uvjet] nije obavezan, ali se može koristiti za filtriranje podataka prema zadanom uvjetu.
- NARUČI PO Naziv polja (polja) je obavezno i polje je na kojem će se izvršiti sortiranje. Ključna riječ MySQL DESC određuje da sortiranje mora biti u silaznom redoslijedu.
- [LIMIT] nije obavezno, ali se može koristiti za ograničavanje broja rezultata vraćenih iz skupa rezultata upita.
Primjeri:
Pogledajmo sada praktični primjer -
SELECT * FROM members;
Izvršavanje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam sljedeće rezultate prikazane u nastavku.
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 |
Pretpostavimo da odjel za marketing želi detalje o članovima poredane prema padajućem redoslijedu prema datumu rođenja. To će im pomoći da pravovremeno pošalju čestitke za rođendan. Spomenuti popis možemo dobiti izvršavanjem upita kao u nastavku -
SELECT * FROM members ORDER BY date_of_birth DESC;
Izvršavanje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam sljedeće rezultate prikazane u nastavku.
Isti upit u rastućem redoslijedu
ODABERITE * OD članova NARUČI PO datumu_rođenja ASC
Napomena: NULL vrijednosti znače da nema vrijednosti (ne nula ili prazan niz). Promatrajte način na koji su razvrstani.
Još primjera
Razmotrimo sljedeću skriptu koja navodi sve zapise članova.
SELECT * FROM `members`;
Izvršavanje gornje skripte daje sljedeće rezultate prikazane u nastavku.
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 |
Pretpostavimo da želimo dobiti popis koji sortira skup upita pomoću polja spola, koristili bismo skriptu prikazanu u nastavku.
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 |
Prvo su prikazani "ženski" članovi, a slijede "muški", jer je to kada se koristi klauzula ORDER BY DESC bez navođenja ključne riječi ASC ili MySQL DESC, prema zadanim postavkama MySQL je sortirao rezultat upita u rastućem redoslijedu.
Pogledajmo sada primjer koji vrši sortiranje pomoću dva stupca ; prvi je razvrstani u uzlaznim redoslijedom po defaultu, dok je drugi stupac razvrstani u silaznom redoslijedu.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Izvršavanje gornje skripte u MySQL radnom stolu protiv myflixdb daje sljedeće rezultate.
Stupac spola prema zadanim je postavkama sortiran uzlaznim redoslijedom, dok je stupac datuma rođenja eksplicitno sortiran silaznim redoslijedom
Zašto možemo koristiti DESC i ASC?
Pretpostavimo da želimo ispisati povijest plaćanja za člana videoteke kako bismo pomogli u odgovaranju na upite s recepcije, ne bi li bilo logičnije da se isplate ispisuju silaznim kronološkim redoslijedom počevši od nedavne uplate do ranije uplate?
DESC u SQL-u je ključna riječ koja postaje korisna u takvim situacijama. Možemo napisati upit koji sortira popis u padajućem redoslijedu koristeći datum plaćanja.
Pretpostavimo da marketinški odjel želi dobiti popis filmova po kategorijama koje članovi mogu koristiti za odlučivanje koji će filmovi biti dostupni u knjižnici prilikom iznajmljivanja filmova, ne bi li bilo logičnije pogledati sortiranje imena i naslova kategorija filmova u rastućem članovi mogu brzo potražiti podatke s popisa?
Ključna riječ ASC dobro dođe u takvim situacijama; popis filmova možemo sortirati prema nazivu kategorije i naslovu filma u rastućem redoslijedu.
Sažetak
- Sortiranje rezultata upita preuređuje redove vraćene iz skupa rezultata upita u uzlaznom ili silaznom redoslijedu.
- Ključna riječ DESC u SQL-u koristi se za sortiranje rezultata upita u opadajućem redoslijedu.
- Ključna riječ ASC koristi se za sortiranje rezultata upita u rastućem redoslijedu.
- I DESC i ASC rade zajedno s ključnom riječi ORDER BY. Također se mogu koristiti u kombinaciji s drugim ključnim riječima kao što su klauzula WHERE i LIMIT
- Zadana vrijednost za ORDER BY kada ništa nije izričito navedeno je ASC.