Ez a bemutató elmagyarázza a MySQL ORDER BY záradékot és annak használatát mind az ASC, mind a DESC opcióval. Egyszerű példák segítségével ismertetjük ezt a MySQL utasítást.
1. ORDER BY záradék szintaxis
2. ORDER BY W/O ASC vagy DESC
3. ORDER BY DESC
4. ORDER BY relatív pozíció
5. ORDER BY relatív pozíció
5. ORDER BY Két mező ASC & DESC
Most nézzük át egyesével az egyes szakaszokat.
MySQL ORDER BY záradék
A MySQL SELECT parancs alapértelmezés szerint nem ad vissza rendezett eredményhalmazt. Ezért a kimenet rendezéséhez az ORDER BY záradékot kell a SELECT lekérdezéshez csatolni. Az ORDER BY záradék használatával a következőket érhetjük el:
- A rekordok egy/másfél mező szerinti rendezésének elvégzése
- A sorok külön oszlopok szerinti rendezése növekvő (ASC) vagy csökkenő (DESC) sorrendben.
Az alábbiakban az ORDER BY záradék szintaxisát szemléltetjük:
Szintaxis
# MySQL ORDER BY ClauseSELECT field1, field2,...FROM target_tableORDER BY field1 , field2 ,...
Az ORDER BY záradék alapértelmezés szerint növekvő sorrendben végez rendezést. Az ASC kifejezés a növekvő, míg a DESC a csökkenő sorrendet jelenti. DESC esetén a SELECT lekérdezésben meg kell említenünk.
Megjegyezzük, hogy a MySQL-ben az ORDER BY kifejezéssel akár egy kifejezést is megadhatunk. Emellett mind az ASC, mind a DESC opció opcionális ehhez az utasításhoz.
Itt van néhány mintafeladat a gyakorláshoz.
MySQL ORDER BY záradék példák
Nézzük meg, hogyan használhatjuk az ORDER BY záradékot MySQL SELECT lekérdezésekkel.
Order by használata asc/desc opció nélkül
A demonstrációhoz először hozzunk létre egy Sample nevű táblát, és töltsük fel azt néhány tesztadattal.
CREATE TABLE Sample ( sample_id int NOT NULL, sample_name VARCHAR(20), vendor_name VARCHAR(20), sample_size INT );
Ezután illesszünk be néhány dummy adatot a teszteléshez.
Ezután ellenőriznünk kell a Sample táblánk tartalmát. Lásd alább.
SELECT *FROM Sample;
A kimenete a következő:
Most gyakoroljuk az ORDER BY záradékot a “vendor_name” mappán. És megfigyeljük a MySQL-adatbázisból kapott eredményhalmazt:
SELECT *FROM SampleORDER BY vendor_name;
Az alábbi kimenetet mutató eredményt kapjuk:
A fenti eredményhalmazból felmérhetjük, hogy a rendezés az alapértelmezett növekvő sorrendben történt.
Rendezés csökkenő sorrendben
Ebben a példában az ORDER BY záradékot mutatjuk be a csökkenő sorrendben történő rendezéshez. Ehhez kifejezetten meg kell adnunk.
Itt van a MySQL utasítás a csökkenő sorrendben történő rendezéshez:
SELECT *FROM SampleORDER BY vendor_name DESC;
A SELECT kimenete:
Rendezés mező szerint relatív pozícióban
A MySQL ORDER BY záradékát használhatjuk egy mező RELATÍV pozícióban történő rendezésére.
Ha a SELECT lekérdezésben oszlopneveket adunk meg, akkor az első mező az egyes pozícióra kerül, a második a kettesre, és így tovább. Ráadásul ezt a tényt egy példával igazolhatjuk.
Itt egy SELECT utasítás, amely megjeleníti a mezőket, és relatív pozíció szerint rendez.
SELECT # pos_1 pos_2 pos_3 pos_4 sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY 4 DESC;
Íme az eredményhalmaz, amelyet a fenti parancs futtatása után kapunk:
Láthatjuk, hogy a MySQL a sample_size mező alapján rendezett, amely a negyedik oszlopnak felel meg.
ORDER BY használata két oszlopra történő rendezéshez
Korábban már említettük, hogy az ORDER BY-t egy vagy több mezőre is használhatjuk. Ilyen esetben a MySQL az első mezőt elsődlegesnek, az utóbbit pedig másodlagosnak tekinti. Ezért először az elsődleges, majd a másodikat rendezi.
Ezért ebben a példában az ORDER BY-t két oszlopon mutatjuk be, az egyik mezőt ASC-ként, a másikat DESC-ként. Emellett több rekordot is be kell illesztenünk, hogy megmutassuk, hogy a második oszlop is rendezésre kerül.
A fentiek elején megadott INSERT utasítást figyelmen kívül hagyhatjuk, és használhatjuk az alábbit.
Most, van néhány sorunk ugyanazzal a szállítói névvel, de különböző mintaméretekkel. És most a vendor_name (elsődleges) és a sample_size (másodlagos) mezők alapján fogunk rendezni.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC, sample_size DESC;
Ez a MySQL utasítás ezt az eredményt adja:
Láthatjuk, hogy az elsődleges mező összes értéke növekvő sorrendbe lett rendezve. És az is látszik a kimenetből, hogy a rendezés (DESC-ben) a másodikon is megtörtént.
Most nézzük meg, mi lenne az eredmény, ha csak a szállító neve alapján rendeztünk volna.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC;
Ez a parancs a következő eredményt adja:
A fenti eredményből láthatjuk, hogy a Google-hez és a Twitterhez tartozó sorok nem a minta mérete alapján lettek rendezve.
Reméljük, hogy a bemutató befejezése után már biztonságban érzi magát a MySQL ORDER BY záradék használatában. A magabiztosság megszerzéséhez azonban többet gyakorolhat példákkal.
Az SQL alapoktól a mélységig történő elsajátításához olvassa el lépésről lépésre a MySQL oktatóanyagunkat.