COMANDA PENTRU în MySQLInterogare ASC și DESC cu exemplu
⚡ Rezumat inteligent
COMANDA PENTRU în MySQL sortează seturile de rezultate ale interogărilor în secvență ascendentă sau descendentă prin intermediul cuvintelor cheie ASC și DESC. Secțiunile de mai jos explică sintaxa, sortarea pe o singură coloană și pe mai multe coloane, plasarea valorilor NULL și exemplele de lucru executate pe baza de date eșantion myflixdb.

Ce este ORDER BY în MySQL?
MySQL COMANDA DE este o clauză utilizată cu interogarea SELECT pentru a sorta datele într-o manieră ordonată. MySQL Clauza ORDER BY sortează setul de rezultate ale interogării fie în ordine crescătoare, fie descrescătoare, pe o coloană, fie pe mai multe coloane simultan.
Când comanda SELECT este utilizată singură, rândurile sunt returnate în ordinea în care motorul de stocare le citește, ceea ce nu este o ordine garantată. Sortarea este pur și simplu rearanjarea acelor rânduri într-o secvență specificată. Se poate efectua atât pentru tipuri de date numerice, cât și pentru șiruri de caractere, precum și pentru date de tip dată.
MySQL Sintaxă ORDER BY
Înainte de a analiza exemplele, este util să vedem unde se află clauza în interiorul unei instrucțiuni SELECT complete.
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
AICI
- instrucțiunea SELECT... " este interogarea de selecție obișnuită.
- "| " reprezintă alternative.
- „[condiție WHERE | GROUP BY `nume_câmp(uri)` HAVING condiție]” este condiția opțională utilizată pentru a filtra setul de rezultate ale interogării.
- „COMANDAȚI DE” efectuează sortarea setului de rezultate ale interogării.
- „[ASC | DESC]” este cuvântul cheie utilizat pentru a sorta setul de rezultate în ordine crescătoare sau descendentă. Rețineți că ASC este implicit.
Ce sunt cuvintele cheie DESC și ASC?
ASC și DESC sunt cele două direcții de sortare acceptate de ORDER BY. Tabelul de mai jos le compară în funcție de tipurile de date pe care le veți sorta cel mai des.
ASC este forma scurtă pentru ascensiune |
MySQL DESC este forma scurtă pentru coborâre |
|---|---|
| Este folosit pentru a sorta rezultatele interogării într-un stil de sus în jos. | Se folosește pentru a sorta rezultatele interogării într-un stil de jos în sus. |
| Când lucrați la tipuri de date de date, cea mai veche dată este afișată în partea de sus a listei. | Când se lucrează cu tipuri de date de tip dată, cea mai recentă dată este afișată în partea de sus a listei. |
| Când lucrați cu tipuri de date numerice, cele mai mici valori sunt afișate în partea de sus a listei. | Când se lucrează cu tipuri de date numerice, cele mai mari valori sunt afișate în partea de sus a setului de rezultate ale interogării. |
| Când lucrați cu tipuri de date șir, setul de rezultate ale interogării este sortat de la cele care încep cu litera A până la litera Z. | Când se lucrează cu tipuri de date șir, setul de rezultate ale interogării este sortat de la cele care încep cu litera Z și merg în jos până la litera A. |
Atât cuvintele cheie SQL DESC, cât și ASC sunt utilizate împreună cu instrucțiunea SELECT și MySQL clauza ORDER BY.
Sintaxa DESC și ASC
Cuvântul cheie de sortare SQL DESC are următoarea sintaxă de bază.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N];
AICI
- SELECTAȚI {fieldName(s) | *} FROM tableName(e) este instrucțiunea care conține câmpurile și tabelul(ele) din care se obține setul de rezultate.
- [condiția UNDE] este opțional, dar poate fi folosit pentru a filtra datele în funcție de condiția dată.
- ORDINE DUPĂ nume(le) de câmp este obligatorie și denumește câmpul asupra căruia se efectuează sortarea. MySQL Cuvântul cheie DESC specifică faptul că sortarea se face în ordine descrescătoare.
- [LIMITĂ N] este opțională, dar poate fi utilizată pentru a limita numărul de rânduri returnate de setul de rezultate al interogării.
De ce să folosiți DESC și ASC în MySQL?
Cunoașterea sintaxei este doar jumătate din rezolvarea problemei. Motivul pentru care există ORDER BY este că un set de rezultate ușor de produs pentru o bază de date nu este întotdeauna ușor de citit pentru o persoană.
Să presupunem că imprimați istoricul plăților pentru un membru al videotecii, astfel încât recepția să poată răspunde rapid la solicitări. Este mult mai logic să imprimați plățile în ordine cronologică descrescătoare, începând cu cea mai recentă plată și mergând înapoi la cea mai veche. DESC în SQL este cuvântul cheie util într-o astfel de situație, deoarece lista poate fi sortată după data plății.
Acum, să presupunem că departamentul de marketing dorește o listă de filme pe categorii, astfel încât membrii să poată vedea ce titluri deține biblioteca înainte de a le închiria. Sortarea numelor categoriilor și a titlurilor filmelor în ordine crescătoare permite membrilor să caute informații rapid, exact așa cum ar face într-un index. Cuvântul cheie ASC servește acestui scop.
Pe scurt, ORDER BY transformă un set de rezultate brute într-un raport. Cuvântul cheie pe care îl alegeți depinde de întrebarea pe care o pune cititorul: ce s-a întâmplat cel mai recent solicită DESC, în timp ce Unde găsesc acest articol solicită ASC.
MySQL COMANDĂ DUPĂ Exemplu
Toate exemplele care urmează rulează pe baza de date exemplu myflixdb. Începeți cu tabelul de membri nesortați, care este returnat în ordinea implicită.
SELECT * FROM members;
Executarea scriptului de mai sus în MySQL Workbench-ul pentru myflixdb ne oferă următoarele rezultate, prezentate mai jos.
| numar de membru | nume complete | sex | data nașterii | adresă fizică | adresă_poștală | număr_de_contact | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Femeie | 21-07-1980 | Primul teren stradal nr. 4 | Geantă privată | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Femeie | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Masculin | 12-07-1989 | Strada a 3-a 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Femeie | 14-02-1984 | Strada 2 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Masculin | NULL | Woodcrest | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Masculin | NULL | Woodcrest | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Masculin | NULL | Woodcrest | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Masculin | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Masculin | 24-08-1981 | Parcul din sud | PO Box 4563 | 987786553 | NULL |
Sortarea în ordine descrescătoare cu DESC
Să presupunem că departamentul de marketing dorește ca detaliile membrilor să fie aranjate în ordine descrescătoare după data nașterii. Acest lucru ajută echipa să trimită urări de ziua de naștere în timp util. Lista este generată de interogarea de mai jos.
SELECT * FROM members ORDER BY date_of_birth DESC;
Executarea scriptului de mai sus în MySQL Workbench-ul pentru myflixdb ne oferă următoarele rezultate, prezentate mai jos.
Sortarea în ordine ascendentă cu ASC
Aceeași interogare în ordine crescătoare schimbă pur și simplu cuvântul cheie.
SELECT * FROM members ORDER BY date_of_birth ASC;
Notă: NULL înseamnă nicio valoare, ceea ce nu este același lucru cu zero sau un șir gol. Observați în ambele capturi de ecran cum sunt grupate datele NULL: MySQL tratează NULL ca fiind mai mică decât orice altă valoare, astfel încât rândurile NULL apar primele sub ASC și ultimele sub DESC.
Cum se sortează după mai multe coloane în MySQL
Sortarea pe o singură coloană răspunde la întrebări simple. Rapoartele necesită de obicei un al doilea nivel de ordonare, iar ORDER BY acceptă o listă de câmpuri separate prin virgulă exact în acest scop.
Luați în considerare următorul script de sortare SQL care listează toate înregistrările membrilor fără nicio instrucțiune explicită.
SELECT * FROM `members`;
Executarea scriptului de mai sus oferă următoarele rezultate prezentate mai jos.
| numar de membru | nume complete | sex | data nașterii | adresă fizică | adresă_poștală | număr_de_contact | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Femeie | 21-07-1980 | Primul teren stradal nr. 4 | Geantă privată | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Femeie | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Masculin | 12-07-1989 | Strada a 3-a 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Femeie | 14-02-1984 | Strada 2 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Masculin | NULL | Woodcrest | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Masculin | NULL | Woodcrest | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Masculin | NULL | Woodcrest | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Masculin | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Masculin | 24-08-1981 | Parcul din sud | PO Box 4563 | 987786553 | NULL |
Sortarea unei singure coloane după ordinea implicită
Să presupunem că dorim o listă care sortează setul de rezultate ale interogării folosind câmpul gender. Scriptul de mai jos face acest lucru fără a denumi o direcție.
SELECT * FROM `members` ORDER BY `gender`;
| numar de membru | nume complete | sex | data nașterii | adresă fizică | adresă_poștală | număr_de_contact | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Femeie | 21-07-1980 | Primul teren stradal nr. 4 | Geantă privată | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Femeie | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Femeie | 14-02-1984 | Strada 2 23 | NULL | NULL | NULL |
| 3 | Robert Phil | Masculin | 12-07-1989 | Strada a 3-a 34 | NULL | 12345 | rm@tstreet.com |
| 5 | Leonard Hofstadter | Masculin | NULL | Woodcrest | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Masculin | NULL | Woodcrest | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Masculin | NULL | Woodcrest | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Masculin | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Masculin | 24-08-1981 | Parcul din sud | PO Box 4563 | 987786553 | NULL |
Membrii „feminin” sunt afișați primii, urmați de membrii „masculin”. Acest lucru se datorează faptului că atunci când clauza ORDER BY este utilizată fără a specifica ASC sau MySQL Cuvântul cheie DESC, MySQL sortează implicit setul de rezultate ale interogării în ordine crescătoare.
Sortarea a două coloane în direcții opuse
Să analizăm acum un exemplu care efectuează sortarea folosind două coloanePrima coloană este sortate in ordine crescătoare în mod implicit, în timp ce a doua coloană este sortate in ordine descrescatoare.
SELECT * FROM `members` ORDER BY `gender`, `date_of_birth` DESC;
Executarea scriptului de mai sus în MySQL Workbench-ul pentru myflixdb dă următoarele rezultate.
Coloana cu sexul a fost sortată în ordine crescătoare în mod implicit, în timp ce coloana cu data nașterii a fost sortată explicit în ordine descrescătoare. Fiecare cuvânt cheie direction se aplică numai coloanei pe care o urmează.
Cum se combină ORDER BY cu WHERE, LIMIT și GROUP BY
ORDER BY este rareori singura clauză dintr-o interogare de producție. MySQL evaluează întotdeauna clauzele într-o secvență fixă, iar cunoașterea acestei secvențe explică de ce rezultatele arată așa cum arată.
- DIN citește rândurile din tabel.
- UNDE elimină rândurile care nu îndeplinesc condiția.
- A SE GRUPA CU restrânge rândurile supraviețuitoare în grupuri, iar HAVING filtrează acele grupuri.
- COMANDA DE secvențiază orice rânduri rămase.
- LIMITĂ elimină numărul solicitat de rânduri din lista sortată.
Deoarece ORDER BY rulează după WHERE și GROUP BY, dar înainte de LIMIT, o interogare precum „cei mai tineri cinci membri din Woodcrest” este exprimată într-o singură instrucțiune.
SELECT full_names, date_of_birth FROM members WHERE physical_address = 'Woodcrest' ORDER BY date_of_birth DESC LIMIT 5;
Aceeași ordine se aplică rezultatelor grupate. Valorile agregate produse de funcții agregate categorii precum COUNT pot fi sortate, astfel încât cea mai aglomerată categorie să ajungă în partea de sus a raportului.
SELECT gender, COUNT(*) AS members_count FROM members GROUP BY gender ORDER BY members_count DESC;
Sfat: ORDER BY poate sorta după un alias de coloană, după o expresie sau chiar după poziția în coloană, cum ar fi ORDER BY 3. Sortarea după poziție este fragilă, deoarece inserarea unei noi coloane în lista SELECT modifică silențios cheia de sortare. Denumiți coloana în schimb.
Un aspect de performanță merită ținut minte. Când coloana sortată conține un index, MySQL poate citi rândurile în ordinea indexului și poate sări peste sortare. Fără un index, tabelele mari forțează o sortare a fișierelor în memorie sau pe disc, acesta fiind motivul obișnuit pentru care o interogare de raport devine lentă.

ASC este forma scurtă pentru ascensiune
MySQL DESC este forma scurtă pentru coborâre

