Sorteren in omgekeerde volgorde sql. SQL-sortering - ORDER OP clausule

Bij het ophalen van gegevens is het belangrijk om deze in een bepaalde volgorde te krijgen. Sorteren kan op elk veld met elk gegevenstype. Dit kan voor numerieke velden in oplopende of aflopende volgorde worden gesorteerd. Voor karakter (tekst) velden kan dit in alfabetische volgorde worden gesorteerd, hoewel het in feite ook in oplopende of aflopende volgorde wordt gesorteerd. Het kan ook in elke richting worden uitgevoerd - van A naar Z en vice versa van Z naar A.

De essentie van het sorteerproces is om de volgorde in een bepaalde volgorde te brengen. U kunt meer leren over sorteren in het artikel "Sorteeralgoritmen" Bijvoorbeeld een willekeurige numerieke reeks in oplopende volgorde sorteren:

2, 4, 1, 5, 9

moet resulteren in een geordende volgorde:

1, 2, 4, 5, 6

Evenzo, bij het sorteren in oplopende volgorde van tekenreekswaarden:

Ivanov Ivan, Petrov Petr, Ivanov Andrey

het resultaat zou moeten zijn:

Ivanov Andrey, Ivanov Ivan, Petrov Petr

Hier is de string "Ivanov Andrey" naar het begin verplaatst, omdat de vergelijking van strings karakter voor karakter wordt uitgevoerd. Beide regels beginnen met dezelfde karakters " Ivanov ". Aangezien het teken "A" in het woord "Andrey" eerder in het alfabet komt dan het teken "I" in het woord "Ivan", wordt deze regel eerder geplaatst.

Sorteren in SQL-query

Om te sorteren, moet u de opdracht ORDER BY aan de queryreeks toevoegen. Na deze opdracht wordt het veld aangegeven waarmee wordt gesorteerd.

Voor voorbeelden gebruiken we de goederentabel:

aantal
(Item nummer)
titel
(titel)
prijs
(prijs)
1 Mandarijn50
2 Watermeloen120
3 Een ananas80
4 Banaan40

De gegevens hier zijn al geordend op de kolom "num". Laten we nu een query maken die een tabel weergeeft met producten alfabetisch gesorteerd:

KIES * VAN goederen BESTELLEN OP titel

SELECT * FROM goederen - specificeert om alle velden uit de goederentabel te selecteren;

ORDER BY - sorteeropdracht;

titel is de kolom waarop moet worden gesorteerd.

Het resultaat van zo'n query is het volgende:

aantal titel prijs
3 Een ananas80
2 Watermeloen120
4 Banaan40
1 Mandarijn50

U kunt ook op elk van de velden in de tabel sorteren.

Sorteerrichting

Standaard sorteert het ORDER BY-commando in oplopende volgorde. Om de sorteerrichting handmatig te bepalen, wordt de kolomnaam gevolgd door het trefwoord ASC (oplopend) of DESC (aflopend). Dus om onze tabel in aflopende volgorde van prijzen weer te geven, moeten we de vraag als volgt stellen:

KIES * VANAF goederen BESTELLEN OP prijs DESC

Sorteren in oplopende volgorde zou zijn:

KIES * VANAF goederen BESTELLEN OP prijs ASC

Sorteren op meerdere velden

SQL maakt het mogelijk om op meerdere velden tegelijk te sorteren. Om dit te doen, worden na het ORDER BY-commando de vereiste velden gespecificeerd, gescheiden door komma's. De volgorde in het queryresultaat wordt geconfigureerd in dezelfde volgorde als waarin de sorteervelden zijn opgegeven.

kolom1 kolom2 kolom3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 a
1 3 a
3 4 a

Sorteer de tabel volgens de volgende regels:

KIES * UIT mytable ORDER BY kolom1 ASC, kolom2 DESC, kolom3 ASC

Die. eerste kolom oplopend, tweede aflopend, derde weer oplopend. De query rangschikt de rijen op de eerste kolom en vervolgens, zonder de eerste regel te vernietigen, op de tweede kolom. Dan, op dezelfde manier, zonder de bestaande regels te overtreden, volgens de derde. Het resultaat is een dataset zoals deze:

kolom1 kolom2 kolom3
1 3 a
1 3 c
1 2 a
2 2 b
2 1 b
3 1 a
3 1 c

Volgorde van het ORDER BY-commando in een query

Het sorteren van rijen wordt meestal uitgevoerd samen met een dataselectievoorwaarde. Het ORDER BY-commando wordt achter de WHERE-selectieclausule geplaatst. We selecteren bijvoorbeeld producten met een prijs van minder dan 100 roebel, gesorteerd op naam in alfabetische volgorde:

KIES * VAN goederen WAAR prijs 100 BESTELLEN OP prijs ASC

Opmerking:
Alle artikelen in de huidige categorie SQL-lessen gebruiken voorbeelden en taken op basis van de voorbeelddatabase.

Volgens de eerste normale vorm van relationele databases zou de volgorde van rijen in tabellen er niet toe moeten doen. Maar in de praktijk is het vaak nodig om informatie te sorteren voordat deze op het scherm wordt weergegeven.

De ORDER BY-component is verantwoordelijk voor het ordenen van de rijen die in de SQL-query worden verwijderd. Het bevindt zich helemaal aan het einde van het verzoek:

KIES<Перечень столбцов>VAN<Перечень таблиц>BESTEL DOOR<Условие сортировки>

De sorteervoorwaarde specificeert de kolommen waarop de resulterende tabelrijen zullen worden gesorteerd:

BESTELLEN OP col1, col2

Sorteervolgorde in SQL

Er zijn 2 sorteermogelijkheden: oplopend en aflopend. Om het type sortering in een query te specificeren, wordt na de kolomnaam het trefwoord ASC (oplopend) of DESC (aflopend) opgegeven, die respectievelijk de oplopende of aflopende volgorde bepalen. Het standaardtype is ASC:

ORDER BY col1 -- volgende clausule is gelijk aan ORDER BY col1 ACS

Het is ook mogelijk om voor verschillende kolommen een andere volgorde aan te geven:

BESTELLEN OP col1 DESC, col2 ASC

Om het materiaal te consolideren, lost u het probleem op in de trainingsdatabase:

U wilt een lijst met werknemers-ID's krijgen, gesorteerd op groep in oplopende volgorde en in dienst genomen van "nieuwste naar oudste".

SELECT ID, Group, HireDate FROM Employees ORDER BY Group, HireDate DESC

Laten we de syntaxis van de SELECT-instructie aanvullen met de ORDER BY-component (een verticale balk betekent dat een van de opties moet worden geselecteerd):

SELECT [Table_name.]Column_name[, [Table_name.]Column_name2 ...] FROM [[Database_name.]Schema_name.]Table_name Column_name [, [Table_name.]Column_name2 ...]]

  • Volgende >

Als de materialen van office-menu.ru u hebben geholpen, steun dan het project zodat ik het verder kan ontwikkelen.

Vaak is het nodig om het resultaat van een zoekopdracht in een bepaalde volgorde weer te geven, bijvoorbeeld alfabetisch. Om dit te doen, heeft het DBMS een speciale functie in de SQL-taal - sorteren. Tegelijkertijd kan de programmeur kiezen welke velden en in welke volgorde het zal gebeuren om het gewenste resultaat te bereiken zonder serieuze programmeervaardigheden te gebruiken.

Wat is sorteren in een database?

Het werken met databases gaat voortdurend gepaard met een grote hoeveelheid informatie die moet worden besteld. Momenteel zijn er een aantal DBMS met een breed scala aan functies, waarvan Oracle en MS SQL de meest populaire zijn. Het sorteren van informatie, als een van de belangrijkste procedures bij het werken met de database, wordt geleverd door een speciale ingebouwde functie in elk van hen.

Met rangschikkingsgegevens kunt u het zoekproces vereenvoudigen en in sommige gevallen helpt het om problemen op te lossen of het programma te optimaliseren. SQL-sortering wordt uitgevoerd door een afzonderlijk geselecteerd veld en indien nodig, als er identieke waarden in de elementen van dit veld zijn, kunt u aanvullende parameters opgeven die de rangschikking van rijen bepalen.

Sorteeropdracht

SQL-sortering in de database wordt verzorgd met behulp van de ORDER BY-functie. Dus bij het weergeven van informatie uit de database, na het specificeren van de kolommen en tabellen waaruit de meting zal worden gedaan, is het noodzakelijk om de sorteeropdracht in de query op te geven en vervolgens het veld of de velden te bepalen waarmee de sortering zal worden uitgevoerd.

Als u bijvoorbeeld gegevens wilt ophalen uit de velden Naam en Leeftijd uit de tabel Mensen, terwijl u het resultaat in alfabetische volgorde wilt weergeven op de kolom Naam, dan helpt de volgende query: SELECTEER naam, leeftijd UIT mensen ORDER OP naam.

Hoe stel je de sorteervolgorde in?

Moderne omstandigheden stellen programmeurs verschillende taken en soms is het nodig om vooraf te bepalen in welke volgorde het resultaat wordt weergegeven - in aflopende of oplopende volgorde, alfabetisch of in omgekeerde volgorde? En hiervoor wordt in SQL de sorteervolgorde bepaald door een trefwoord aan de query toe te voegen. Na het selecteren van de velden en tabellen waaruit de gewenste informatie zal worden verkregen, moet u ORDER BY toevoegen en vervolgens de naam opgeven van de kolom waarop u wilt sorteren.

Om de omgekeerde volgorde te krijgen, moet u de DESC-parameter achter de naam opgeven. Als het nodig is om de elementen op twee of meer criteria te sorteren, worden de kolommen gescheiden door komma's en wordt de rangordeprioriteit gegeven aan het veld dat als eerste in de lijst komt. Het is vermeldenswaard dat de volgorde van elementen in omgekeerde volgorde, de DESC-parameter elk slechts één veld bevat, na de naam waarvan dit trefwoord wordt aangegeven, daarom moet het, indien nodig, worden opgegeven in alle geselecteerde kolommen.

Alternatieve sorteermethoden

Als het niet mogelijk is om de ingebouwde SQL-sorteerfunctie te gebruiken, kan een van de bekende algoritmen worden geschreven. Als het nodig is om de snelste volgorde van elementen te bereiken, is het de moeite waard om een ​​methode te gebruiken die is gebaseerd op het half breken van een reeks elementen. Ook erg populair zijn "bubble"-rangschikkingsmethoden, waarbij twee aangrenzende elementen worden verwisseld in het geval van een onjuiste positie, "heap sort", die het grootste element naar het einde van de lijst stuurt, en "insert sort", die vooraf de locatie van elk element op zijn beurt.

Zelfgeschreven schrijven van het algoritme zal de sorteersnelheid niet significant verhogen, maar het zal bijdragen aan de ontwikkeling van programmeervaardigheden en u ook in staat stellen het proces aan te passen door het rangschikkingsschema voor een specifieke database aan te passen om de efficiëntie te verhogen van het programma.

In de toekomst moeten we onze selectie mogelijk sorteren - alfabetisch voor tekst of oplopend/aflopend voor numerieke waarden. Voor dergelijke doeleinden in SQL er is een speciale operator BESTEL DOOR .

1. Sorteer de geselecteerde gegevens.

Laten we onze hele tabel sorteren op het aantal productverkopen, namelijk op de kolom Hoeveelheid.

KIES * VANAF Sumproduct BESTELLEN OP Bedrag

We zien dat de query de records in oplopende volgorde in het veld sorteerde Hoeveelheid. Zorg ervoor dat u de volgorde van de operatoren volgt, d.w.z. operator BESTEL DOOR moet helemaal aan het einde van het verzoek gaan. Anders krijgt u een foutmelding.

Ook een kenmerk van de operator BESTEL DOOR is dat het gegevens kan sorteren op een veld dat we niet in de query hebben geselecteerd, dat wil zeggen dat het voldoende is dat het in de database stond.

2. Sorteren op meerdere velden.

Laten we ons voorbeeld nu aanvullend sorteren op nog een veld. Laat dit het veld zijn Stad, die de plaats van verkoop van producten weergeeft.

KIES * VANAF Sumproduct BESTELLEN OP Bedrag, Stad

De sorteervolgorde is afhankelijk van de volgorde van de velden in de query. Dat wil zeggen, in ons geval worden de gegevens eerst per kolom gesorteerd Hoeveelheid, en dan door Stad.

3. Sorteerrichting.

Hoewel de standaardoperator BESTEL DOOR sorteert in oplopende volgorde, we kunnen waarden ook in aflopende volgorde sorteren. Om dit te doen, zetten we aan het einde van elk veld de operator DESC (wat een afkorting is voor AFLOPEND).

KIES * VANAF Sumproduct BESTELLEN OP Bedrag DESC , Stad

In dit voorbeeld is de waarde in het veld Hoeveelheid werden in aflopende volgorde gesorteerd, en in het veld Stad- Oplopend. Operator DESC geldt slechts voor één kolom, dus indien nodig moet deze worden geschreven na elk veld dat deelneemt aan het sorteren.