Denne vejledning forklarer MySQL ORDER BY-klausulen og dens brug med både ASC- og DESC-indstillingerne. Vi vil beskrive denne MySQL-anvisning ved hjælp af enkle eksempler.
1. ORDER BY-klausulen Syntaks
2. ORDER BY W/O ASC eller DESC
3. ORDER BY DESC
4. ORDER BY Relative Position
5. ORDER BY Relative Position
5. ORDER BY to felter ASC & DESC
Lad os nu gennemgå hvert af afsnittene et for et.
MySQL ORDER BY-klausul
MySQL SELECT-kommandoen returnerer ikke som standard et sorteret resultatsæt. For at sortere resultatet skal du derfor tilføje ORDER BY-klausulen i SELECT-forespørgslen for at sortere resultatet. Vi kan opnå følgende ved at bruge ORDER BY-klausulen:
- Udfør sortering af poster efter et enkelt/flere felter
- Sortere rækkerne efter særskilte kolonner i stigende (ASC) eller faldende (DESC) rækkefølge.
Det følgende illustrerer syntaksen for ORDER BY-klausulen:
Syntaks
# MySQL ORDER BY ClauseSELECT field1, field2,...FROM target_tableORDER BY field1 , field2 ,...
Som standard udfører ORDER BY-klausulen sortering i stigende rækkefølge. Udtrykket ASC er en forkortelse for stigende, mens DESC betyder faldende. For DESC skal du nævne det i din SELECT-forespørgsel.
Bemærk, at du endda kan angive et udtryk med ORDER BY-klausulen i MySQL. Desuden er begge muligheder ASC og DESC valgfrie for denne erklæring.
Her er nogle prøveøvelser til øvelse.
MySQL ORDER BY-klausulen Eksempler
Lad os se, hvordan du kan bruge ORDER BY-klausulen med MySQL SELECT-forespørgsler.
Brug af order by uden asc/desc-indstilling
For at demonstrere det, skal vi først oprette en tabel ved navn Sample og fylde den med nogle testdata.
CREATE TABLE Sample ( sample_id int NOT NULL, sample_name VARCHAR(20), vendor_name VARCHAR(20), sample_size INT );
Næst skal vi indsætte nogle dummy-data til vores test.
Derpå skal vi kontrollere indholdet af vores Sample-tabel. Se nedenfor.
SELECT *FROM Sample;
Dets output er som følger:
Nu skal vi udøve ORDER BY-klausulen på “vendor_name”-filen. Og vi observerer det resultatsæt, der modtages fra MySQL-databasen:
SELECT *FROM SampleORDER BY vendor_name;
Du får et resultat, der viser nedenstående output:
Du kan vurdere ud fra ovenstående resultatsæt, at sorteringen fandt sted i den opadgående standardrækkefølge.
Sortere i aftagende rækkefølge
I dette eksempel demonstrerer vi ORDER BY-klausulen til at sortere i aftagende rækkefølge. Hertil skal vi angive den eksplicit.
Her er MySQL-anvisningen til at sortere i aftagende rækkefølge:
SELECT *FROM SampleORDER BY vendor_name DESC;
Opdatet af SELECT er:
Sortere efter felt på en relativ position
Det er muligt at bruge MySQL ORDER BY-klausulen til at sortere efter et felt på en RELATIV position.
Når vi angiver kolonnenavne i SELECT-forespørgslen, er det første felt på position et, det andet på to osv. Desuden kan vi bekræfte dette faktum ved hjælp af et eksempel.
Her er en SELECT-anvisning, der viser felter og sorterer efter en relativ position.
SELECT # pos_1 pos_2 pos_3 pos_4 sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY 4 DESC;
Her er det resultatsæt, som du får efter at have kørt ovenstående kommando:
Du kan se, at MySQL sorterer efter feltet sample_size, som svarer til den fjerde kolonne.
Brug af ORDER BY til at sortere på to kolonner
Vi havde tidligere nævnt, at du kan bruge ORDER BY på et eller flere felter. I et sådant tilfælde behandler MySQL det første felt som primært og det sidste som sekundært. Derfor sorterer den først det primære og derefter det andet.
Derfor vil vi i dette eksempel demonstrere ORDER BY på to kolonner, et felt som ASC og et andet DESC. Vi skal også indsætte flere poster for at vise, at den anden kolonne også bliver sorteret.
Du kan ignorere den INSERT-anvisning, der er givet i begyndelsen ovenfor, og bruge den nedenfor.
Nu har vi et par rækker med de samme leverandørnavne, men med forskellige stikprøvestørrelser. Og vi vil nu sortere baseret på felterne vendor_name (primær) og sample_size (sekundær).
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC, sample_size DESC;
Denne MySQL-anvisning giver dette resultat:
Du kan se, at alle værdierne i det primære felt blev sorteret i opstigende rækkefølge. Og det fremgår også tydeligt af outputtet, at sorteringen (i DESC) også fandt sted på det andet.
Nu skal vi finde ud af, hvad resultatet ville være, hvis vi kun havde sorteret på leverandørnavnet.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC;
Denne kommando vil give som:
Vi kan se af ovenstående resultat, at rækker tilhørende Google og Twitter ikke sorterede på deres stikprøvestørrelser.
Vi håber, at du efter indpakning af denne tutorial skulle føle dig tryg ved at bruge MySQL ORDER BY-klausulen. Du kan dog øve dig mere med eksempler for at få selvtillid.
For at lære SQL fra bunden til dybden skal du også læse vores trinvise MySQL tutorial.