BESTIL INDEN MySQL: DESC & ASC-forespørgsel med EKSEMPEL
Sortering af resultater
Ved hjælp af SELECT-kommandoen blev resultaterne returneret i samme rækkefølge, som posterne blev tilføjet til databasen. Dette er standard sorteringsrækkefølge. I dette afsnit vil vi se på, hvordan vi kan sortere vores forespørgselsresultater. Sortering er simpelthen at omarrangere vores forespørgselsresultater på en bestemt måde. Sortering kan udføres på en enkelt kolonne eller på mere end én kolonne. Det kan gøres på tal, strenge samt datodatatyper.
Hvad er ORDER BY i MySQL?
MySQL BESTIL BY bruges sammen med SELECT-forespørgslen til at sortere data på en overskuelig måde. Det MySQL ORDER BY-udtrykket bruges til at sortere forespørgselsresultatsættene i enten stigende eller faldende rækkefølge.
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
HER
- "SELECT erklæring... " er den almindelige valgforespørgsel
- ” | “ repræsenterer alternativer
- “[HVOR tilstand | GRUPPER EFTER `field_name(s)` HAVING condition” er den valgfri betingelse, der bruges til at filtrere forespørgselsresultatsættene.
- "BEstil efter" udfører sorteringen af forespørgselsresultatsættet
- “[ASC | DESC]” er nøgleordet, der bruges til at sortere resultatsæt i enten stigende eller faldende rækkefølge. Bemærk ASC bruges som standard.
- VÆLG {feltnavn(e) | *} FRA tabelnavne er sætningen, der indeholder felterne og tabellerne, som resultatsættet skal hentes fra.
- [WHERE-tilstand] er valgfri, men kan bruges til at filtrere dataene i henhold til den givne betingelse.
- BESTIL BY feltnavn(e) er obligatoriske og er det felt, som sorteringen skal udføres på. Det MySQL DESC nøgleord angiver, at sorteringen skal være i faldende rækkefølge.
- [BEGRÆNSE] er valgfri, men kan bruges til at begrænse antallet af resultater, der returneres fra forespørgselsresultatsættet.
Hvad er DESC- og ASC-nøgleord?
Det bruges til at sortere forespørgselsresultaterne i en top til bund stil. | Det bruges til at sortere forespørgselsresultaterne i en bund til top-stil |
Når du arbejder med datodatatyper, vises den tidligste dato øverst på listen. | . Når du arbejder med datotyper, vises den seneste dato øverst på listen. |
Når du arbejder med numeriske datatyper, vises de laveste værdier øverst på listen. | Når du arbejder med numeriske datatyper, vises de højeste værdier øverst i forespørgselsresultatsættet. |
Når du arbejder med strengdatatyper, sorteres forespørgselsresultatsættet fra dem, der starter med bogstavet A, der går op til bogstavet Z. | Når du arbejder med strengdatatyper, sorteres forespørgselsresultatsættet fra dem, der starter med bogstavet Z, der går ned til bogstavet A. |
Både SQL DESC- og ASC-nøgleordene bruges sammen i forbindelse med SELECT-sætningen og MySQL ORDER BY klausul.
DESC og ASC syntaks
SQL DESC sorteringsnøgleordet har følgende grundlæggende syntaks.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
HER
eksempler:
Lad os nu se på et praktisk eksempel –
SELECT * FROM members;
Udførelse af ovenstående script i MySQL workbench mod myflixdb giver os 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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 |
Lad os antage, at marketingafdelingen vil have medlemmernes detaljer arrangeret i faldende rækkefølge efter fødselsdato. Dette vil hjælpe dem med at sende fødselsdagshilsener rettidigt. Vi kan få den nævnte liste ved at udføre en forespørgsel som nedenfor -
SELECT * FROM members ORDER BY date_of_birth DESC;
Udførelse af ovenstående script i MySQL workbench mod myflixdb giver os følgende resultater vist nedenfor.
Samme forespørgsel i stigende rækkefølge
VÆLG * FRA medlemmer BESTIL EFTER fødselsdato ASC
Bemærk: NULL-værdier betyder ingen værdier (ikke nul eller tom streng) . Observer den måde, de er blevet sorteret på.
Flere eksempler
Lad os overveje følgende SQL-sortering efter script, der viser alle medlemsposter.
SELECT * FROM `members`;
Udførelse af ovenstående script giver 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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 |
Antag, at vi ønsker at få en liste, der sorterer forespørgselsresultatsættet ved hjælp af kønsfeltet, ville vi bruge scriptet 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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
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 | rm@tstreet.com |
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 |
"Kvindelige" medlemmer er blevet vist først efterfulgt af "mandlige" medlemmer, dette skyldes, at når ORDER BY DESC-klausulen bruges uden at angive ASC eller MySQL DESC nøgleord, som standard, MySQL har sorteret forespørgselsresultatsættet i stigende rækkefølge.
Lad os nu se på et eksempel, der gør det sortering ved hjælp af to kolonner; den første er sorteres in stigende rækkefølge som standard, mens den anden kolonne er sorteres in faldende rækkefølge.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Udførelse af ovenstående script i MySQL workbench mod myflixdb giver følgende resultater.
Kønskolonnen blev sorteret i stigende rækkefølge som standard, mens fødselsdatokolonnen blev sorteret i faldende rækkefølge eksplicit
Hvorfor kan vi bruge DESC og ASC?
Antag, at vi ønsker at udskrive en betalingshistorik for et videobiblioteksmedlem for at hjælpe med at besvare forespørgsler fra receptionen, ville det så ikke være mere logisk at få betalingerne udskrevet i en faldende kronologisk rækkefølge begyndende med den seneste betaling til den tidligere betaling?
DESC i SQL er et nøgleord, som bliver praktisk i sådanne situationer. Vi kan skrive en forespørgsel, der sorterer listen i faldende rækkefølge ved hjælp af betalingsdatoen.
Antag, at marketingafdelingen ønsker at få en liste over film efter kategori, som medlemmer kan bruge til at bestemme, hvilke film der er tilgængelige i biblioteket, når de lejer film, ville det ikke være mere logisk at sortere filmkategorinavne og -titler i stigende grad, så kan medlemmer hurtigt slå oplysningerne op fra listen?
ASC nøgleordet er praktisk i sådanne situationer; vi kan få filmlisten sorteret efter kategorinavn og filmtitel i stigende rækkefølge.
Resumé
- Sortering af forespørgselsresultater er at omarrangere de rækker, der returneres fra et forespørgselsresultatsæt, enten i stigende eller faldende rækkefølge.
- Nøgleordet DESC i SQL bruges til at sortere forespørgselsresultatsættet i faldende rækkefølge.
- ASC-nøgleordet bruges til at sortere forespørgselsresultatsættet i stigende rækkefølge.
- Både DESC og ASC fungerer sammen med nøgleordet ORDER BY. De kan også bruges i kombination med andre søgeord som f.eks WHERE-klausul og LIMIT
- Standarden for ORDER BY, når intet eksplicit er angivet, er ASC.