Eredmények rendezése
A SELECT paranccsal az eredményeket ugyanabban a sorrendben adták vissza, ahogyan a rekordokat is felvették az adatbázisba. Ez az alapértelmezett rendezési sorrend. Ebben a szakaszban megvizsgáljuk, hogyan tudjuk rendezni a lekérdezés eredményeit. A rendezés egyszerűen lekérdezési eredményeink meghatározott módon történő átrendezése. A rendezés elvégezhető egyetlen oszlopon vagy egynél több oszlopon. Meg lehet tenni a szám, a karakterláncok, valamint a dátum adattípusok esetében.
Mi az a ORDER BY a MySQL-ben?
A MySQL ORDER BY a SELECT lekérdezéssel együtt használható az adatok rendezett rendezéséhez. A MySQL ORDER BY záradék a növekvő vagy csökkenő sorrendben rendezi a lekérdezés eredményhalmazait.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
ITT
- A "SELECT utasítás ..." a szokásos választási lekérdezés
- A "|" alternatívákat jelent
- "[WHERE feltétel | GROUP BY" mező_neve (i) "HAVING feltétel" a választható feltétel, amely a lekérdezés eredményhalmazainak szűrésére szolgál.
- Az "ORDER BY" végrehajtja a lekérdezés eredményhalmazának rendezését
- "[ASC | DESC]" az a kulcsszó, amellyel az eredményhalmazokat növekvő vagy csökkenő sorrendben lehet rendezni. Megjegyzés: Az ASC- t használja alapértelmezettként.
Mik azok a DESC és ASC kulcsszavak?
Az ASC a felemelkedés rövid formája |
A MySQL DESC az ereszkedés rövid formája |
Felülről lefelé stílusban rendezi a lekérdezés eredményeit. |
A lekérdezés eredményeinek alsó és felső stílusú rendezésére szolgál |
Dátum adattípusok használatakor a legkorábbi dátum jelenik meg a lista tetején. |
. Dátumtípusok esetén a legfrissebb dátum jelenik meg a lista tetején. |
Numerikus adattípusokkal dolgozva a legalacsonyabb értékek jelennek meg a lista tetején. |
Numerikus adattípusokkal dolgozva a legmagasabb értékek jelennek meg a lekérdezés eredményhalmazának tetején. |
Karakterlánc-adattípusokkal végzett munka során a lekérdezés eredményhalmaza az A betűvel kezdődő és a Z betűig felfelé rendeződik. |
Karakterlánc-adattípusokkal végzett munka során a lekérdezés eredményhalmaza a Z betűvel kezdődő és az A betűig levő sorba van rendezve. |
Az SQL DESC és az ASC kulcsszavakat együtt használják a SELECT utasítással és a MySQL ORDER BY záradékkal.
DESC és ASC szintaxis
Az SQL DESC rendezési kulcsszó a következő alapvető szintaxissal rendelkezik.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
ITT
- SELECT {mezőnév (ek) | *} A FROM tableName (s) egy olyan utasítás, amely azokat a mezőket és táblázatokat tartalmazza, amelyekből az eredménykészletet megkapja.
- A [WHERE feltétel] opcionális, de felhasználható az adatok szűrésére az adott feltételnek megfelelően.
- A ORDER BY mezőnév (ek) kötelező kitölteni, és ez az a mező, amelyen a rendezést el kell végezni. A MySQL DESC kulcsszó megadja, hogy a rendezés csökkenő sorrendben történjen.
- A [LIMIT] opcionális, de használható a lekérdezés eredményhalmazából visszaküldött eredmények számának korlátozására.
Példák:
Most nézzünk meg egy gyakorlati példát -
SELECT * FROM members;
A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb fájlhoz a következő eredményeket nyújtja nekünk.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
Tegyük fel, hogy a marketing részleg a tagok adatait a születési dátum csökkenő sorrendjében szeretné elrendezni. Ez segít nekik időben elküldeni a születésnapi üdvözletet. Az említett listát az alábbihoz hasonló lekérdezés végrehajtásával kaphatjuk meg -
SELECT * FROM members ORDER BY date_of_birth DESC;
A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb fájlhoz a következő eredményeket nyújtja nekünk.
Ugyanez a lekérdezés növekvő sorrendben
KIVÁLASZT * FROM tagokból ORDER BY date_of_birth ASC
Megjegyzés: A NULL értékek nem jelentenek értékeket (nem nulla vagy üres karakterlánc). Figyelje meg a válogatás módját.
További példák
Vizsgáljuk meg a következő szkriptet, amely felsorolja az összes tag rekordot.
SELECT * FROM `members`;
A fenti parancsfájl végrehajtása az alábbi eredményeket mutatja.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Tegyük fel, hogy egy listát szeretnénk kapni, amely a gender mező segítségével rendezi a lekérdezés eredményhalmazát, az alább látható szkriptet használnánk.
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Először a "női" tagokat, majd a "férfi" tagokat jelenítették meg, ennek oka, hogy amikor az ORDER BY DESC záradékot az ASC vagy a MySQL DESC kulcsszó megadása nélkül használják, alapértelmezés szerint a MySQL növekvő sorrendbe rendezte a lekérdezés eredményét.
Most nézzünk meg egy példát, amely két oszlop segítségével rendezi a rendezést ; az elsőt rendezve a növekvő sorrendben alapértelmezés szerint, míg a második oszlop rendezve a csökkenő sorrendben.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb fájlhoz a következő eredményeket adja.
A nem oszlopot alapértelmezés szerint növekvő sorrendbe rendezték, míg a születési dátum oszlopot kifejezetten csökkenő sorrendbe rendezték
Miért használhatjuk a DESC-t és az ASC-t?
Tegyük fel, hogy egy videotár tagjának fizetési előzményeit akarjuk kinyomtatni, hogy segítsünk a recepción található kérdések megválaszolásában. Nem lenne logikusabb, ha a befizetéseket csökkenő időrendben nyomtatnák, a legutóbbi befizetéssel kezdődően a korábbi fizetésig?
A DESC az SQL-ben olyan kulcsszó, amely hasznos lehet ilyen helyzetekben. Írhatunk egy lekérdezést, amely csökkenő sorrendben rendezi a listát a fizetési dátum alapján.
Tegyük fel, hogy a marketing osztály kategóriák szerinti listát akar kapni, amelyek alapján a tagok eldönthetik, mely filmek állnak rendelkezésre a könyvtárban a filmek kölcsönzésekor, nem lenne-e logikusabb a filmkategóriák nevének és címének növekvő sorrendben történő keresése a tagok gyorsan megkereshetik az információkat a listáról?
Az ASC kulcsszó jól jön ilyen helyzetekben; megkaphatjuk a filmlistát kategória és film címe szerint növekvő sorrendben.
Összegzés
- A lekérdezési eredmények rendezése a lekérdezés eredményhalmazából visszaadott sorok átrendezését növekvő vagy csökkenő sorrendben.
- A DESC kulcsszó az SQL-ben a lekérdezés eredményhalmazának csökkenő sorrendbe rendezésére szolgál.
- Az ASC kulcsszó a növekvő sorrendben rendezi a lekérdezés eredményhalmazát.
- A DESC és az ASC egyaránt a ORDER BY kulcsszóval működik. Használhatók más kulcsszavakkal együtt is, például WHERE záradékkal és LIMIT-kel
- Az alapértelmezett ORDER BY, ha semmit nem határoztak meg kifejezetten, az ASC.