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.

  • 🔠 Comportament implicit: ORDER BY sortează în ordine crescătoare atunci când nu se specifică nici ASC, nici DESC, deci ASC este opțional în majoritatea instrucțiunilor.
  • ⬆️ Cuvinte cheie ASC: ASC aranjează numerele de la cel mai mic la cel mai mare, șirurile de la A la Z și datele de la cea mai veche la cea mai recentă.
  • ⬇️ Cuvinte cheie DESC: DESC inversează această secvență, ceea ce se potrivește istoricului plăților recente și listelor descrescătoare cu data nașterii.
  • 🧮 Sortare pe mai multe coloane: Ordinea coloanelor contează. ORDER BY gender, date_of_birth DESC sortează mai întâi în ordine crescătoare sexul, apoi în ordine descrescătoare datele în interiorul fiecărui grup.
  • 🔎 Combinarea clauzelor: WHERE filtrează rândurile, GROUP BY le agregă, ORDER BY secvențiază rezultatul, iar LIMIT îl elimină.
  • ⚙️ Factor de performanță: Un index pe coloana sortată permite MySQL pentru a evita o operațiune de sortare a fișierelor pe tabele mari.

COMANDA PENTRU în MySQL

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.

Cuvinte cheie DESC și ASCASC este forma scurtă pentru ascensiune Cuvinte cheie DESC și ASCMySQL 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 e-mail
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.

MySQL Rezultatul interogării ORDER BY DESC

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;

MySQL Rezultatul interogării ORDER BY 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 e-mail
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 e-mail
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.

MySQL Exemplu ORDER BY pe două coloane

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ă.

  1. DIN citește rândurile din tabel.
  2. UNDE elimină rândurile care nu îndeplinesc condiția.
  3. A SE GRUPA CU restrânge rândurile supraviețuitoare în grupuri, iar HAVING filtrează acele grupuri.
  4. COMANDA DE secvențiază orice rânduri rămase.
  5. 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ă.

Întrebări frecvente

Se poate. Fără un index pe coloana sortată, MySQL efectuează o sortare a fișierelor pe întregul set de rezultate. Adăugarea unui index care corespunde coloanei și direcției ORDER BY permite serverului să citească rândurile în ordine și să sară peste acest pas.

De obicei nu. Ordonarile implicite, cum ar fi utf8mb4_0900_ai_ci, nu țin cont de majuscule/minuscule, așa că „apple” și „Apple” sortează împreună. O ordonare binară sau _cs, sau ORDER BY BINARY column_name, produce o ordonare ținând cont de majuscule/minuscule, unde literele majuscule sunt primele.

Da. ORDER BY RAND() amestecă setul de rezultate, ceea ce este util pentru alegerea unui film sau a unui membru aleatoriu. Evaluează fiecare rând înainte de sortare, așa că asociați-l cu LIMIT și evitați-l pe tabele foarte mari.

Da. Instrumente de asistență AI integrate în instrumente precum MySQL Banc de lucru Transformați cererile în limbaj simplu în instrucțiuni SELECT cu ORDER BY. Verificați întotdeauna coloana și direcția de sortare generate, deoarece o inteligență artificială nu poate ști ce ordine necesită raportul dumneavoastră.

Parțial. Consultanții bazați pe inteligență artificială citesc jurnalele de interogări lente și sugerează indexuri care elimină operațiunile de sortare a fișierelor. Sugestiile necesită în continuare revizuire umană, deoarece fiecare index suplimentar încetinește inserările și actualizările din același tabel.

Rezumați această postare cu: