BESTÄLL INN MySQL: DESC & ASC-fråga med EXEMPEL
Sortering av resultat
Med kommandot SELECT returnerades resultaten i samma ordning som posterna lades till i databasen. Detta är standardsorteringsordningen. I det här avsnittet kommer vi att titta på hur vi kan sortera våra frågeresultat. Sortering är helt enkelt att ordna om våra sökresultat på ett specificerat sätt. Sortering kan utföras på en kolumn eller på mer än en kolumn. Det kan göras på antal, strängar och datumdatatyper.
Vad är ORDER BY in MySQL?
MySQL SORTERA EFTER används i samband med SELECT-frågan för att sortera data på ett ordnat sätt. De MySQL ORDER BY-satsen används för att sortera frågeresultatuppsättningarna i antingen stigande eller fallande ordning.
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
HÄR
- "SELECT-sats... " är den vanliga urvalsfrågan
- ” | " representerar alternativ
- "[VART villkor | GRUPPER EFTER `field_name(s)` HAVING condition” är det valfria villkoret som används för att filtrera frågeresultatuppsättningarna.
- "SORTERA EFTER" utför sorteringen av frågeresultatuppsättningen
- “[ASC | DESC]” är nyckelordet som används för att sortera resultatuppsättningar i antingen stigande eller fallande ordning. Notera ASC används som standard.
- VÄLJ {fieldName(s) | *} FRÅN tabellnamn är satsen som innehåller fälten och tabellerna som resultatuppsättningen ska hämtas från.
- [WHERE-tillstånd] är valfritt men kan användas för att filtrera data enligt det givna villkoret.
- SORTERA EFTER fältnamn(en) är obligatoriskt och är det fält som sorteringen ska utföras på. De MySQL DESC nyckelord anger att sorteringen ska ske i fallande ordning.
- [BEGRÄNSA] är valfritt men kan användas för att begränsa antalet resultat som returneras från frågeresultatuppsättningen.
Vad är DESC- och ASC-nyckelord?
ASC är kortformen för stigande |
MySQL DESC är kortformen för fallande |
|---|---|
| Den används för att sortera frågeresultaten i en stil från topp till botten. | Den används för att sortera frågeresultaten i en stil från botten till topp |
| När du arbetar med datumdatatyper visas det tidigaste datumet överst i listan. | . När du arbetar med datumtyper visas det senaste datumet överst i listan. |
| När du arbetar med numeriska datatyper visas de lägsta värdena överst i listan. | När du arbetar med numeriska datatyper visas de högsta värdena överst i frågeresultatuppsättningen. |
| När du arbetar med strängdatatyper sorteras frågeresultatuppsättningen från de som börjar med bokstaven A som går upp till bokstaven Z. | När du arbetar med strängdatatyper sorteras frågeresultatuppsättningen från de som börjar med bokstaven Z och går ner till bokstaven A. |
Både SQL DESC- och ASC-nyckelorden används tillsammans i kombination med SELECT-satsen och MySQL ORDER BY klausul.
DESC och ASC syntax
SQL DESC-sorteringsnyckelordet har följande grundläggande syntax.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
HÄR
Exempel:
Låt oss nu titta på ett praktiskt exempel –
SELECT * FROM members;
Exekvera skriptet ovan i MySQL arbetsbänk mot myflixdb ger oss följande resultat som visas nedan.
| 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 |
Låt oss anta att marknadsavdelningen vill ha medlemmarnas uppgifter ordnade i fallande ordning efter födelsedatum. Detta kommer att hjälpa dem att skicka födelsedagshälsningar i rätt tid. Vi kan få nämnda lista genom att utföra en fråga som nedan -
SELECT * FROM members ORDER BY date_of_birth DESC;
Exekvera skriptet ovan i MySQL arbetsbänk mot myflixdb ger oss följande resultat som visas nedan.
Samma fråga i stigande ordning
VÄLJ * FRÅN medlemmar BESTÄLL EFTER födelsedatum ASC
Obs: NULL-värden betyder inga värden (inte noll eller tom sträng) . Observera hur de har sorterats.
Fler exempel
Låt oss överväga följande SQL sortering efter skript som listar alla medlemsposter.
SELECT * FROM `members`;
Att köra skriptet ovan ger följande resultat som visas nedan.
| 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 |
Anta att vi vill få en lista som sorterar frågeresultatuppsättningen med hjälp av könsfältet, skulle vi använda skriptet som visas nedan.
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 |
"Kvinnliga" medlemmar har visats först följt av "Manliga" medlemmar, detta beror på att när ORDER BY DESC-satsen används utan att specificera ASC eller MySQL DESC nyckelord, som standard, MySQL har sorterat frågeresultatuppsättningen i stigande ordning.
Låt oss nu titta på ett exempel som gör det sortering med två kolumner; den första är sorterad in stigande ordning som standard medan den andra kolumnen är sorterad in fallande ordning.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Exekvera skriptet ovan i MySQL arbetsbänk mot myflixdb ger följande resultat.
Kolumnen för kön sorterades i stigande ordning som standard medan kolumnen för födelsedatum sorterades uttryckligen i fallande ordning
Varför kan vi använda DESC och ASC?
Anta att vi vill skriva ut en betalningshistorik för en medlem i videobiblioteket för att hjälpa till med att svara på frågor från receptionen, vore det inte mer logiskt att få betalningarna utskrivna i fallande kronologisk ordning från och med den senaste betalningen till den tidigare betalningen?
DESC i SQL är ett nyckelord som är praktiskt i sådana situationer. Vi kan skriva en fråga som sorterar listan i fallande ordning med hjälp av betalningsdatum.
Anta att marknadsavdelningen vill få en lista över filmer efter kategori som medlemmarna kan använda för att bestämma vilka filmer som är tillgängliga i biblioteket när de hyr filmer, vore det inte mer logiskt att sortera filmkategoriernas namn och titel i stigande riktning så att kan medlemmar snabbt slå upp informationen från listan?
Nyckelordet ASC kommer väl till pass i sådana situationer; vi kan få filmlistan sorterad efter kategorinamn och filmtitel i stigande ordning.
Sammanfattning
- Att sortera frågeresultat är att omarrangera raderna som returneras från en frågeresultatuppsättning antingen i stigande eller fallande ordning.
- Nyckelordet DESC i SQL används för att sortera frågeresultatuppsättningen i fallande ordning.
- Nyckelordet ASC används för att sortera frågeresultatuppsättningen i stigande ordning.
- Både DESC och ASC fungerar tillsammans med nyckelordet ORDER BY. De kan också användas i kombination med andra nyckelord som t.ex VAR klausul och LIMIT
- Standard för ORDER BY när inget har specificerats är ASC.

ASC är kortformen för stigande
MySQL DESC är kortformen för fallande

