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.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.