BESTIL I: MySQL: DESC & ASC-forespørgsel med EKSEMPEL

Indholdsfortegnelse:

Anonim

Sorteringsresultater

Ved hjælp af kommandoen SELECT blev resultaterne returneret i samme rækkefølge, som posterne blev tilføjet i databasen. Dette er standardsorteringsrækkefølgen. 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 en kolonne. Det kan gøres på antal, strenge såvel som datadatatyper.

Hvad er ORDER BY i MySQL?

MySQL ORDER BY bruges i forbindelse med SELECT-forespørgslen til at sortere data på en ordnet måde. MySQL ORDER BY-klausulen bruges til at sortere forespørgselsresultatsæt 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-sætning ..." er den almindelige select-forespørgsel
  • "|" repræsenterer alternativer
  • "[WHERE condition | GROUP BY` field_name (s) `HAVING condition" er den valgfri betingelse, der bruges til at filtrere forespørgselsresultatsættene.
  • "ORDER BY" udfører sorteringen af ​​forespørgselsresultatsættet
  • "[ASC | DESC]" er det nøgleord, der bruges til at sortere resultatsæt i enten stigende eller faldende rækkefølge. Bemærk ASC bruges som standard.

Hvad er DESC- og ASC-nøgleord?

ASC er den korte form for stigende

MySQL DESC er den korte form til nedadgående

Det bruges til at sortere forespørgselsresultaterne i en top til bund-stil.

Det bruges til at sortere forespørgselsresultaterne fra bund til top-stil

Når du arbejder med datadatatyper, vises den tidligste dato øverst på listen.

. Når du arbejder på datatyper, 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øgleord bruges sammen i forbindelse med SELECT-sætningen og MySQL ORDER BY-klausulen.

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

  • VÆLG {fieldName (s) | *} FRA tabelnavn (er) er udsagnet, der indeholder de felter og tabeller, hvorfra resultatsættet skal hentes.
  • [WHERE condition] er valgfri, men kan bruges til at filtrere dataene i henhold til den givne tilstand.
  • ORDER BY feltnavn (er) er obligatorisk og er det felt, som sorteringen skal udføres på. MySQL DESC-nøgleordet specificerer, at sorteringen skal være i faldende rækkefølge.
  • [LIMIT] er valgfri, men kan bruges til at begrænse antallet af resultater, der returneres fra forespørgselsresultatsættet.

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 email
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

Lad os antage, at marketingafdelingen vil have medlemsoplysninger arrangeret i faldende rækkefølge efter fødselsdato. Dette hjælper dem med at sende fødselsdagshilsner 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.

Den samme forespørgsel i stigende rækkefølge

VÆLG * FRA medlemmer BESTIL EFTER dato_af_fødsel ASC

Bemærk: NULL-værdier betyder ingen værdier (ikke nul eller tom streng). Overhold den måde, de er sorteret på.

Flere eksempler

Lad os overveje følgende script, der viser alle medlemsoptegnelser.

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 email
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

Antag, at vi ønsker at få en liste, der sorterer forespørgselsresultatsættet ved hjælp af kønsfeltet, vi bruger scriptet vist nedenfor.

SELECT * FROM `members` ORDER BY `gender`;
 
membership_number full_names gender date_of_birth physical_address postal_address contct_number email
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

"Kvindelige" medlemmer er først blevet vist efterfulgt af "Mandlige" medlemmer, det er fordi når ORDER BY DESC-klausul bruges uden at angive ASC- eller MySQL DESC-nøgleordet, har MySQL som standard sorteret forespørgselsresultatet i stigende rækkefølge.

Lad os nu se på et eksempel, der sorterer ved hjælp af to kolonner ; den første sorteres i stigende rækkefølge som standard, mens den anden kolonne sorteres i 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 som standard sorteret i stigende rækkefølge, mens fødselsdatoen kolonnen blev sorteret i faldende rækkefølge eksplicit

Hvorfor bruger vi muligvis DESC og ASC?

Antag, at vi vil udskrive en betalingshistorik til et videobiblioteksmedlem for at hjælpe med at besvare forespørgsler fra receptionen, ville det ikke være mere logisk at få betalingerne udskrevet i en faldende kronologisk rækkefølge startende med den seneste betaling til den tidligere betaling?

DESC i SQL er et nøgleord, der 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 se sortere filmkategoriens navne og titel i stigende retning, så medlemmer hurtigt kan slå oplysningerne op fra listen?

ASC-nøgleordet er nyttigt i sådanne situationer; vi kan få filmlisten sorteret efter kategorienavn og filmtitel i stigende rækkefølge.

Resumé

  • Sortering af forespørgselsresultater omarrangerer de rækker, der returneres fra et forespørgselsresultat, enten i stigende eller faldende rækkefølge.
  • Nøgleordet DESC i SQL bruges til at sortere forespørgselsresultatet i faldende rækkefølge.
  • ASC-nøgleordet bruges til at sortere forespørgselsresultatet 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 nøgleord som WHERE-klausul og LIMIT
  • Standard for ORDER BY, når intet eksplicit er angivet, er ASC.