Tässä opetusohjelmassa selitetään MySQL ORDER BY -lauseke ja sen käyttö sekä ASC- että DESC-vaihtoehtojen kanssa. Kuvaamme tämän MySQL-lausekkeen yksinkertaisten esimerkkien avulla.
1. ORDER BY -lausekkeen syntaksi
2. ORDER BY W/O ASC tai DESC
3. ORDER BY DESC
4. ORDER BY Relative Position
5. ORDER BY Kaksi kenttää ASC & DESC
Käsitellään nyt kukin osio yksitellen.
MySQL ORDER BY -lauseke
MySQL:n SELECT-komento ei oletusarvoisesti palauta lajiteltua tulosjoukkoa. Näin ollen tuloksen lajittelemiseksi sinun on liitettävä SELECT-kyselyyn ORDER BY -lauseke. ORDER BY -lausekkeen avulla voimme saavuttaa seuraavat tulokset:
- Toteuta tietueiden lajittelu yksittäisen/monen kentän mukaan
- Lajittele rivit erillisten sarakkeiden mukaan nousevassa (ASC) tai laskevassa (DESC) järjestyksessä.
Seuraavassa havainnollistetaan ORDER BY -lausekkeen syntaksia:
Syntaksi
# MySQL ORDER BY ClauseSELECT field1, field2,...FROM target_tableORDER BY field1 , field2 ,...
Lauseke ORDER BY suorittaa oletusarvoisesti lajittelun nousevassa järjestyksessä. Termi ASC on lyhenne sanoista nouseva, kun taas DESC tarkoittaa laskevaa. DESC:tä varten sinun on mainittava se SELECT-kyselyssäsi.
Huomaa, että MySQL:ssä ORDER BY -lausekkeen kanssa voi määrittää jopa lausekkeen. Myös molemmat vaihtoehdot ASC ja DESC ovat valinnaisia tälle lausekkeelle.
Tässä on muutamia esimerkkitehtäviä harjoittelua varten.
MySQL ORDER BY -lausekkeen esimerkkejä
Katsotaan, miten ORDER BY -lauseketta käytetään MySQL:n SELECT-kyselyissä.
Order by -lausekkeen käyttäminen ilman asc/desc-vaihtoehtoa
Luotaan ensin havainnollistamiseksi taulukko nimeltä Sample ja täytetään se joillakin testitiedoilla.
CREATE TABLE Sample ( sample_id int NOT NULL, sample_name VARCHAR(20), vendor_name VARCHAR(20), sample_size INT );
Siirretään seuraavaksi testejä varten muutama dummy-tieto.
Sen jälkeen meidän on tarkistettava Sample-taulukkomme sisältö. Katso alla.
SELECT *FROM Sample;
Tulosteet ovat seuraavat:
Harjoitamme nyt ORDER BY -lauseketta ”vendor_name”-taulukkoon. Ja tarkkailemme MySQL-tietokannasta saatua tulosjoukkoa:
SELECT *FROM SampleORDER BY vendor_name;
Saat tuloksen, joka näyttää alla olevan tulosteen:
Voit arvioida yllä olevasta tulosjoukosta, että lajittelu tapahtui oletusarvoisesti nousevassa järjestyksessä.
Lajittele alenevassa järjestyksessä
Esimerkissä havainnollistamme ORDER BY -lausekkeen käyttämistä lajitteluun alenevassa järjestyksessä. Tätä varten meidän on määritettävä se nimenomaisesti.
Tässä on MySQL-lause, jolla lajitellaan alenevassa järjestyksessä:
SELECT *FROM SampleORDER BY vendor_name DESC;
SELECT-lausekkeen tuloste on:
Lajittele kentän mukaan suhteellisessa asemassa
MySQL:n ORDER BY-lausekkeella on mahdollista lajitella kentän mukaan SUHTEELLISESSA asemassa.
Kun SELECT-kyselyssä määritetään sarakkeiden nimet, ensimmäinen kenttä on sijalla yksi, toinen sijalla kaksi ja niin edelleen. Lisäksi voimme vahvistaa tämän tosiasian esimerkin avulla.
Tässä on SELECT-lause, joka näyttää kentät ja lajittelee ne suhteellisen sijainnin mukaan.
SELECT # pos_1 pos_2 pos_3 pos_4 sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY 4 DESC;
Tässä on tulosjoukko, jonka saat yllä olevan komennon suorittamisen jälkeen:
Voit nähdä, että MySQL lajitteli sample_size-kentän mukaan, joka vastaa neljättä saraketta.
ORDER BY:n käyttäminen lajitteluun kahdessa sarakkeessa
Olimme jo aiemmin maininneet, että ORDER BY:tä voi käyttää yhdessä tai useammassa kentässä. Tällaisessa tapauksessa MySQL käsittelee ensimmäistä kenttää ensisijaisena ja jälkimmäistä toissijaisena. Siksi se lajittelee ensin ensisijaisen ja sitten toisen.
Siten tässä esimerkissä näytämme ORDER BY:n kahdelle sarakkeelle, toinen kenttä ASC-kenttänä ja toinen DESC-kenttänä. Lisäksi meidän on lisättävä lisää tietueita osoittaaksemme, että myös toinen sarake lajitellaan.
Voit jättää huomiotta edellä alussa annetun INSERT-lausekkeen ja käyttää alla olevaa.
Nyt meillä on muutama rivi, joilla on samat myyjien nimet mutta erilaiset otoskoot. Ja lajittelemme nyt vendor_name (ensisijainen) ja sample_size (toissijainen) -kenttien perusteella.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC, sample_size DESC;
Tämä MySQL-lause tuottaa tämän tuloksen:
Voit nähdä, että kaikki ensisijaisen kentän arvot lajiteltiin nousevaan järjestykseen. Ja tulosteesta näkyy myös, että lajittelu (DESC-luokassa) tapahtui myös toiselle.
Katsotaan nyt, mikä olisi tulos, jos olisimme lajitelleet vain myyjän nimen perusteella.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC;
Tämä komento antaa tulokseksi:
Yllä olevasta tuloksesta näemme, että Googleen ja Twitteriin kuuluvia rivejä ei lajiteltu niiden otosnimien perusteella.
Toivomme, että kun olet käärinyt tämän opetusohjelman loppuun, sinun pitäisi tuntea olosi mukavaksi MySQL:n ORDER BY -lausekkeen käytössä. Voit kuitenkin harjoitella lisää esimerkkien avulla saadaksesi varmuutta.
Jos haluat oppia SQL:ää tyhjästä syvällisesti, lue vaiheittainen MySQL-oppaamme.