Sorteringsresultater
Ved å bruke SELECT-kommandoen ble resultatene returnert i samme rekkefølge som postene ble lagt til i databasen. Dette er standard sorteringsrekkefølge. I denne delen vil vi se på hvordan vi kan sortere søkeresultatene våre. Sortering er ganske enkelt å omorganisere våre søkeresultater på en spesifisert måte. Sortering kan utføres på en enkelt kolonne eller på mer enn en kolonne. Det kan gjøres på antall, strenger samt datatypetyper.
Hva er ORDER BY i MySQL?
MySQL ORDER BY brukes sammen med SELECT-spørringen for å sortere data på en ordnet måte. MySQL ORDER BY-leddet brukes til å sortere søkeresultatsettene i stigende eller synkende rekkefølge.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
HER
- "SELECT statement ..." er det vanlige select-spørringen
- "|" representerer alternativer
- "[WHERE condition | GROUP BY` field_name (s) `HAVING condition" er den valgfrie tilstanden som brukes til å filtrere søkeresultatsettene.
- "ORDER BY" utfører sorteringen av søkeresultatsett
- "[ASC | DESC]" er nøkkelordet som brukes til å sortere resultatsett i enten stigende eller synkende rekkefølge. Merk ASC brukes som standard.
Hva er DESC- og ASC-nøkkelord?
|
|
Den brukes til å sortere søkeresultatene i en topp til bunn-stil. |
Den brukes til å sortere søkeresultatene i bunn til topp stil |
Når du arbeider med datatypetyper, vises den tidligste datoen øverst på listen. |
. Når du arbeider med datatyper, vises den siste datoen øverst på listen. |
Når du arbeider med numeriske datatyper, vises de laveste verdiene øverst på listen. |
Når du arbeider med numeriske datatyper, vises de høyeste verdiene øverst i spørringsresultatsettet. |
Når du jobber med strengdatatyper, sorteres spørringsresultatsettet fra de som begynner med bokstaven A og går opp til bokstaven Z. |
Når du arbeider med strengdatatyper, sorteres spørringsresultatsettet fra de som begynner med bokstaven Z og går ned til bokstaven A. |
Både SQL DESC og ASC nøkkelord brukes sammen i forbindelse med SELECT-setningen og MySQL ORDER BY-ledd.
DESC og ASC syntaks
SQL DESC-sorteringsnøkkelordet har følgende grunnleggende syntaks.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
HER
- VELG {feltnavn (er) | *} FRA tabellnavn (er) er utsagnet som inneholder feltene og tabellene du skal få resultatsettet fra.
- [WHERE condition] er valgfritt, men kan brukes til å filtrere dataene i henhold til den gitte tilstanden.
- ORDER BY feltnavn (er) er obligatorisk og er feltet som sorteringen skal utføres på. MySQL DESC-nøkkelordet spesifiserer at sorteringen skal være i synkende rekkefølge.
- [LIMIT] er valgfritt, men kan brukes til å begrense antall resultater som returneres fra søkeresultatsettet.
Eksempler:
La oss nå se på et praktisk eksempel -
SELECT * FROM members;
Å utføre skriptet ovenfor i MySQL arbeidsbenk mot myflixdb gir oss følgende resultater vist nedenfor.
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 |
La oss anta at markedsavdelingen ønsker at medlemsopplysningene ordnes i avtagende rekkefølge etter fødselsdato. Dette vil hjelpe dem med å sende bursdagshilsener i tide. Vi kan få den nevnte listen ved å utføre et spørsmål som nedenfor -
SELECT * FROM members ORDER BY date_of_birth DESC;
Å utføre skriptet ovenfor i MySQL arbeidsbenk mot myflixdb gir oss følgende resultater vist nedenfor.
Den samme spørringen i stigende rekkefølge
VELG * FRA medlemmER BESTIL EFTER dato_av_fødsel ASC
Merk: NULL-verdier betyr ingen verdier (ikke null eller tom streng). Observer måten de er sortert på.
Flere eksempler
La oss vurdere følgende skript som viser alle medlemsoppføringene.
SELECT * FROM `members`;
Å utføre ovenstående skript gir følgende resultater vist nedenfor.
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 |
Anta at vi ønsker å få en liste som sorterer spørringsresultatsettet ved hjelp av kjønnsfeltet, vi bruker skriptet vist nedenfor.
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 |
"Kvinne" -medlemmer har blitt vist først etterfulgt av "Mannlige" -medlemmer, dette er fordi når ORDER BY DESC-ledd brukes uten å spesifisere ASC- eller MySQL DESC-nøkkelordet, har MySQL som standard sortert spørringsresultatet satt i stigende rekkefølge.
La oss nå se på et eksempel som sorterer ved hjelp av to kolonner ; den første er sortert i stigende rekkefølge som standard mens den andre kolonnen er sortert i synkende rekkefølge.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Å utføre skriptet ovenfor i MySQL arbeidsbenk mot myflixdb gir følgende resultater.
Kjønnskolonnen ble sortert i stigende rekkefølge som standard mens fødselsdatoen ble sortert i fallende rekkefølge eksplisitt
Hvorfor kan vi bruke DESC og ASC?
Anta at vi vil skrive ut en betalingshistorikk for et videobiblioteksmedlem for å svare på spørsmål fra resepsjonen. Ville det ikke være mer logisk å ha betalinger skrevet ut i en synkende kronologisk rekkefølge fra og med den siste betalingen til den tidligere betalingen?
DESC i SQL er et nøkkelord som blir nyttig i slike situasjoner. Vi kan skrive et spørsmål som sorterer listen i synkende rekkefølge ved hjelp av betalingsdatoen.
Anta at markedsavdelingen ønsker å få en liste over filmer etter kategori som medlemmene kan bruke til å bestemme hvilke filmer som er tilgjengelige i biblioteket når de leier filmer, ville det ikke være mer logisk å se sortere filmkategorinavn og tittel i stigende retning slik at medlemmer raskt kan slå opp informasjonen fra listen?
ASC-nøkkelordet kommer godt med i slike situasjoner; vi kan få filmlisten sortert etter kategorinavn og filmtittel i stigende rekkefølge.
Sammendrag
- Sortering av søkeresultater er å omorganisere radene som returneres fra et søkeresultat, enten i stigende eller synkende rekkefølge.
- Nøkkelordet DESC i SQL brukes til å sortere søkeresultatet i fallende rekkefølge.
- ASC-nøkkelordet brukes til å sortere søkeresultatsettet i stigende rekkefølge.
- Både DESC og ASC fungerer sammen med søkeordet ORDER BY. De kan også brukes i kombinasjon med andre nøkkelord som WHERE-ledd og LIMIT
- Standard for ORDER BY når ingenting eksplisitt er spesifisert, er ASC.