Acest tutorial explică clauza MySQL ORDER BY și utilizarea acesteia cu ambele opțiuni ASC și DESC. Vom descrie această instrucțiune MySQL cu ajutorul unor exemple simple.
1. Sintaxa clauzei ORDER BY
2. ORDER BY W/O ASC sau DESC
3. ORDER BY DESC
4. ORDER BY Relative Position
5. ORDER BY Relative Position
6. ORDER BY Two Fields ASC & DESC
Să trecem acum în revistă fiecare dintre secțiuni, una câte una.
MySQL ORDER BY Clause
Comanda MySQL SELECT nu returnează în mod implicit un set de rezultate sortate. Prin urmare, pentru a sorta rezultatul, trebuie să adăugați clauza ORDER BY în interogarea SELECT. Putem obține următoarele prin utilizarea clauzei ORDER BY:
- Realizați sortarea înregistrărilor în funcție de un singur/mai multe câmpuri
- Sortăm rândurile în funcție de coloane distincte în ordine crescătoare (ASC) sau descrescătoare (DESC).
În cele ce urmează este ilustrată sintaxa clauzei ORDER BY:
Sintaxa
# MySQL ORDER BY ClauseSELECT field1, field2,...FROM target_tableORDER BY field1 , field2 ,...
Clauza ORDER BY efectuează în mod implicit sortarea în ordine crescătoare. Termenul ASC este un acronim pentru crescător, în timp ce DESC înseamnă descrescător. Pentru DESC, trebuie să îl menționați în interogarea SELECT.
Rețineți că în MySQL puteți specifica chiar și o expresie cu ORDER BY. De asemenea, ambele opțiuni ASC și DESC sunt opționale pentru această instrucțiune.
Iată câteva exemple de exerciții pentru exersare.
Exemple de clauză ORDER BY în MySQL
Să verificăm cum să folosim clauza ORDER BY cu interogările MySQL SELECT.
Utilizarea order by fără opțiunea asc/desc
Pentru a demonstra, să creăm mai întâi o tabelă numită Sample și să o populăm cu câteva date de test.
CREATE TABLE Sample ( sample_id int NOT NULL, sample_name VARCHAR(20), vendor_name VARCHAR(20), sample_size INT );
În continuare, să inserăm câteva date fictive pentru testele noastre.
După aceasta, trebuie să verificăm conținutul tabelei noastre Sample. A se vedea mai jos.
SELECT *FROM Sample;
Ieșirea sa este următoarea:
Acum, vom exercita clauza ORDER BY pe fișierul „vendor_name”. Și, vom observa setul de rezultate primit de la baza de date MySQL:
SELECT *FROM SampleORDER BY vendor_name;
Vă veți obține un rezultat care arată ieșirea de mai jos:
Puteți evalua din setul de rezultate de mai sus că sortarea a avut loc în ordinea ascendentă implicită.
Sortare în ordine descrescătoare
În acest exemplu, vom demonstra clauza ORDER BY pentru a sorta în ordine descrescătoare. Pentru aceasta, va trebui să o specificăm în mod explicit.
Iată instrucțiunea MySQL pentru sortarea în ordine descrescătoare:
SELECT *FROM SampleORDER BY vendor_name DESC;
Lovitura din SELECT este:
Sortare după câmp pe o poziție relativă
Este posibil să se utilizeze clauza MySQL ORDER BY pentru a sorta după un câmp pe o poziție RELATIVĂ.
Când specificăm numele coloanelor în interogarea SELECT, primul câmp se află pe poziția unu, al doilea pe doi și așa mai departe. Mai mult, putem valida acest fapt cu ajutorul unui exemplu.
Iată o instrucțiune SELECT care afișează câmpurile și le ordonează pe o poziție relativă.
SELECT # pos_1 pos_2 pos_3 pos_4 sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY 4 DESC;
Iată setul de rezultate pe care îl obțineți după rularea comenzii de mai sus:
Vezi că MySQL a sortat după câmpul sample_size care corespunde celei de-a patra coloane.
Utilizarea ORDER BY pentru a sorta pe două coloane
Am menționat mai devreme că puteți utiliza ORDER BY pe unul sau mai multe câmpuri. Într-un astfel de caz, MySQL tratează primul câmp ca fiind primar și al doilea ca fiind secundar. Prin urmare, îl sortează mai întâi pe cel primar și apoi pe cel de-al doilea.
În consecință, în acest exemplu, vom demonstra ORDER BY pe două coloane, un câmp ca ASC, iar altul DESC. De asemenea, trebuie să inserăm mai multe înregistrări pentru a arăta că și cea de-a doua coloană este sortată.
Puteți ignora instrucțiunea INSERT dată la începutul de mai sus și să o folosiți pe cea de mai jos.
Acum, avem câteva rânduri cu aceleași nume de furnizori, dar cu dimensiuni variate ale eșantioanelor. Și, vom sorta acum pe baza câmpurilor vendor_name (primar) și sample_size (secundar).
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC, sample_size DESC;
Această instrucțiune MySQL produce acest rezultat:
Vezi că toate valorile din câmpul primar au fost sortate în ordine crescătoare. Și, de asemenea, este evident din rezultat că sortarea (în DESC) a avut loc și pe cel de-al doilea.
Acum, să aflăm care ar fi fost rezultatul, dacă am fi sortat doar pe numele furnizorului.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC;
Această comandă va da următorul rezultat:
Potem vedea din rezultatul de mai sus că rândurile aparținând Google și Twitter nu s-au sortat în funcție de mărimea eșantioanelor lor.
Sperăm că, după încheierea acestui tutorial, ar trebui să vă simțiți confortabil în utilizarea clauzei ORDER BY de la MySQL. Cu toate acestea, puteți exersa mai mult cu exemple pentru a câștiga încredere.
De asemenea, pentru a învăța SQL de la zero până la profunzime, citiți tutorialul nostru MySQL pas cu pas.