MySQL ORDER BY
Home

MySQL ORDER BY

MySQL ORDER BY

De ORDER BY clausule voeg je aan een SELECT statement toe om de lijst te ordenen.

Probleem

Het is niet genoeg gegevens uit een tabel te kunnen opvragen, je moet ze ook kunnen sorteren of ordenen. We willen lijsten in alphanumerieke volgorde weergeven omdat het gemakkelijker is in een geordende lijst te zoeken.

Oplossing

Om te sorteren gebruiken we de clusule ORDER BY . Het sorteren kan op 2 manieren:

  1. oplopend en
  2. aflopend.

In het Engels is dat ascending en descending. In SQL wordt dat afgekort naar de clausules ASC en DESC. Stel dat je de namen uit de tabel boeken wil opvragen gesorteerd op de voornaam, de familienaam en titel van de boeken. De query ziet er dan zo uit:

-- ji
-- 4 december 2012
--
use A88586JefInghelbrecht;

-- genest orderen
-- ascending
select Voornaam, Familienaam, Titel from Boeken
   order by Familienaam asc, Voornaam, Titel;

-- desc
-- descending
select Voornaam, Familienaam, Titel from Boeken
   order by Familienaam desc, Voornaam, Titel

Oefening

Selecteer alle boeken volgens Verschijningsjaar te beginnen met het meest recente boek

-- ji
-- 11 september 2013
-- bestandsnaam: BoekenSelectOrderByVerschijningsjaar.sql
use JefInghelbrecht;
select Verschijningsjaar,
   Voornaam,
   Familienaam,
   Titel
from Boeken
   order by Verschijningsjaar desc;

De volgorde van de kolommen in de ORDER BY clausule moet niet overeenkomen met de volgorde van de kolommen in het SELECT statement.

De clausule ASC of DESC moet voor elke kolom bepaald worden. Je kan de volgorde dus ook mixen:

select Voornaam, Familienaam, Titel from Boeken
   order by Familienaam desc, Voornaam, Titel asc;

Kenny merkte op dat je de voornaam en familienaam in één kolom kan plaatsen en had deze oplossing:

select Voornaam + space(1) + Familienaam as Auteur, Title
   from Boeken
   order by Auteur asc, Titel asc;

space() is een functie die het aantal spaties retourneert die door het argument aangegeven wordt.

Yoshi merkte op dat de kolom geen naam heeft. Je kan aan de samengestelde kolom een naam geven door gebruik te maken van de as clausule:

select Voornaam + space(1) + Familienaam as Naam, Titel
   from Boeken
   order by Familienaam desc, Voornaam, Titel asc

Opdracht

Selecteer verschijningsjaar, titel en auteur van alle boeken volgens verschijningsjaar te beginnen met het meest recente boek en binnen elke verschijningsjaar zijn de familienamen alfabetisch geordend.

Sla de script op in BoekenSelectOrderByMeestRecenteBoekEerst.sql

JI

2018-03-21 16:53:37