SQL-Sortierung nach mehreren Feldern. Sortieren von Daten in SQL (ORDER BY)
Beim Abrufen von Daten kann es wichtig sein, diese in einer bestimmten geordneten Form zu erhalten. Die Sortierung kann nach jedem Feld mit jedem Datentyp durchgeführt werden. Bei numerischen Feldern kann dies eine aufsteigende oder absteigende Sortierung sein. Bei Zeichenfeldern (Textfeldern) kann dies eine alphabetische Sortierung sein, obwohl es sich im Wesentlichen auch um eine aufsteigende oder absteigende Sortierung handelt. Es kann auch in jede Richtung ausgeführt werden - von A nach Z und umgekehrt von Z nach A.
Das Wesen des Sortierprozesses besteht darin, die Reihenfolge in eine bestimmte Reihenfolge zu bringen. Mehr zum Sortieren erfahren Sie im Artikel "Sortieralgorithmen" Zum Beispiel eine beliebige Zahlenfolge in aufsteigender Reihenfolge sortieren:
2, 4, 1, 5, 9
sollte eine geordnete Reihenfolge ergeben:
1, 2, 4, 5, 6
Ebenso beim Sortieren aufsteigender Zeichenfolgenwerte:
Ivanov Ivan, Petrov Peter, Ivanov Andrey
das ergebnis sollte sein:
Ivanov Andrey, Ivanov Ivan, Petrov Petr
Hier ging die Zeile "Ivanov Andrey" an den Anfang, da der Vergleich von Strings zeichenweise durchgeführt wird. Beide Zeilen beginnen mit den gleichen Zeichen "Ivanov". Da das Zeichen „A“ im Wort „Andrey“ im Alphabet früher vorkommt als das Zeichen „I“ im Wort „Ivan“, wird diese Zeile früher platziert.
Sortieren in einer SQL-Abfrage
Um eine Sortierung durchzuführen, muss der Befehl ORDER BY zur Abfragezeichenfolge hinzugefügt werden. Nach diesem Befehl wird das Feld angezeigt, nach dem die Sortierung durchgeführt wird.
Als Beispiele verwenden wir die Warentabelle:
num (Artikelnummer) | Titel (Titel) | Preis (Preis) |
1 | Mandarin | 50 |
2 | Wassermelone | 120 |
3 | Eine Ananas | 80 |
4 | Banane | 40 |
Die Daten sind bereits nach der Spalte "num" sortiert. Lassen Sie uns nun eine Abfrage erstellen, die eine Tabelle mit alphabetisch sortierten Produkten anzeigt:
WÄHLEN * VON WARENBESTELLUNG NACH Titel
SELECT * FROM Waren - zeigt an, alle Felder aus der Warentabelle auszuwählen;
ORDER BY - Sortierbefehl;
title - die Spalte, nach der sortiert werden soll.
Das Ergebnis der Ausführung einer solchen Abfrage ist wie folgt:
num | Titel | Preis |
3 | Eine Ananas | 80 |
2 | Wassermelone | 120 |
4 | Banane | 40 |
1 | Mandarin | 50 |
Sie können auch nach allen Tabellenfeldern sortieren.
Sortierrichtung
Standardmäßig sortiert ORDER BY in aufsteigender Reihenfolge. Um die Sortierrichtung manuell zu steuern, wird nach dem Spaltennamen das Schlüsselwort ASC (aufsteigend) oder DESC (absteigend) angegeben. Um unsere Tabelle in absteigender Preisreihenfolge anzuzeigen, müssen Sie die Abfrage also wie folgt einstellen:
WÄHLEN * AB Ware BESTELLEN NACH Preis DESC
Die Sortierung in aufsteigender Reihenfolge des Preises ist:
WÄHLEN * AB Ware BESTELLEN NACH Preis ASC
Nach mehreren Feldern sortieren
SQL ermöglicht das Sortieren nach mehreren Feldern gleichzeitig. Dazu werden nach dem Befehl ORDER BY die erforderlichen Felder durch Kommas getrennt. Die Reihenfolge im Ergebnis der Abfrage wird in der Reihenfolge angepasst, in der die Sortierfelder angegeben sind.
Spalte1 | Spalte2 | Spalte3 |
3 | 1 | C |
1 | 3 | C |
2 | 2 | B |
2 | 1 | B |
1 | 2 | ein |
1 | 3 | ein |
3 | 4 | ein |
Sortieren wir die Tabelle nach den folgenden Regeln:
WÄHLEN * FROM mytable ORDER BY Spalte1 ASC, Spalte2 DESC, Spalte3 ASC
Jene. die erste Spalte ist aufsteigend, die zweite absteigend, die dritte wieder aufsteigend. Die Abfrage ordnet die Zeilen nach der ersten Spalte und dann, ohne die erste Regel zu verletzen, nach der zweiten Spalte. Dann auf die gleiche Weise, ohne die bestehenden Regeln zu verletzen, gemäß dem dritten. Das Ergebnis ist der folgende Datensatz:
Spalte1 | Spalte2 | Spalte3 |
1 | 3 | ein |
1 | 3 | C |
1 | 2 | ein |
2 | 2 | B |
2 | 1 | B |
3 | 1 | ein |
3 | 1 | C |
Reihenfolge von ORDER BY in einer Abfrage
Das Sortieren von Zeilen wird meistens zusammen mit einer Bedingung für die Datenauswahl durchgeführt. Der Befehl ORDER BY wird nach der WHERE-Auswahlbedingung platziert. Zum Beispiel wählen wir Produkte mit einem Preis von weniger als 100 Rubel aus und sortieren nach Namen in alphabetischer Reihenfolge:
WÄHLEN * AB Ware WO Preis 100 NACH Preis BESTELLEN ASC
In Zukunft müssen wir möglicherweise unsere Auswahl sortieren - alphabetisch nach Text oder aufsteigend / absteigend - nach numerischen Werten. Für solche Zwecke in SQL es gibt einen speziellen Operator SORTIEREN NACH .
1. Sortieren Sie die ausgewählten Daten.
Sortieren wir unsere gesamte Tabelle nach der Menge der Produktverkäufe, nämlich nach der Spalte Höhe.
WÄHLEN * VON Sumproduct BESTELLEN NACH Betrag
Wir sehen, dass die Abfrage die Datensätze im Feld aufsteigend sortiert hat Höhe... Die Reihenfolge der Operatoren ist unbedingt einzuhalten, d.h. Operator SORTIEREN NACH sollte ganz am Ende der Anfrage stehen. Andernfalls erhalten Sie eine Fehlermeldung.
Auch eine Funktion des Operators SORTIEREN NACH ist, dass es Daten nach einem Feld sortieren kann, das wir in der Abfrage nicht ausgewählt haben, dh es reicht aus, wenn es überhaupt in der Datenbank vorhanden ist.
2. Sortieren nach mehreren Feldern.
Sortieren wir unser Beispiel nun zusätzlich nach einem weiteren Feld. Lass es ein Feld sein Stadt, das den Verkaufsort der Produkte anzeigt.
WÄHLEN * VON Sumproduct BESTELLEN NACH Betrag, Stadt
Die Sortierreihenfolge hängt von der Reihenfolge der Felder in der Anfrage ab. Das heißt, in unserem Fall werden die Daten zuerst nach der Spalte sortiert Höhe und dann bei Stadt.
3. Sortierrichtung.
Obwohl der Standardoperator SORTIEREN NACH in aufsteigender Reihenfolge sortiert, können wir auch absteigende Sortierungen von Werten schreiben. Dazu schreiben wir am Ende jedes Feldes den Operator DESC (das ist die Abkürzung für ABSTEIGEND).
WÄHLEN * VON Sumproduct BESTELLEN NACH Betrag DESC, City
In diesem Beispiel ist der Wert im Feld Höhe wurden in absteigender Reihenfolge sortiert, und im Feld Stadt- Aufsteigend. Operator DESC gilt nur für eine Spalte, muss also ggf. nach jedem Feld geschrieben werden, das an der Sortierung teilnimmt.
Guten Tag Mitglieder des Forums.
Bei der Konzeption einer Datenbank für die Erstellung von geplanten Reparaturen wurde es notwendig, das Maximum aus den Daten mehrerer Felder zu berechnen, d.h. berechne letzteres.
in MS Exel ist es einfach, aber wie kann es in Access implementiert werden? Müssen Sie wirklich lange schreiben, um die Werte untereinander mehr / weniger zu vergleichen, wie im Beispiel?
Wenn es anders geht, kann ich ein Beispiel posten.
Vielen Dank im Voraus.
Antworten:
Nachricht von glsn
Berechnen Sie das Maximum aus den Daten mehrerer Felder
Wenn genau die Felder ein Eintrag dann wie im beispiel. Aber dann ist deine Basis höchstwahrscheinlich nicht normalisiert, normalerweise wird nach maximal einem Feld in mehreren Datensätzen gesucht.
Antworten:
Erklären Sie noch einmal, was Unterauswahl für Sie bedeutet? Das:
update table set attr1 = subselect.attr1, attr2 = subselect.attr2 aus der Tabelle INNER JOIN (SELECT oid, attr1, attr2 FROM Table2) AS Subselect auf Tabelle .oid = subselect.oid |
???
Frage: ORDER BY Sortierung nach mehreren Feldern
Ich erstelle ein Forum und muss die Daten nach zwei Feldern sortieren: zak und date.
Wenn zak = 1, dann steht das Thema oben und reagiert auf den Datumswert.
Wenn zak = 0, dann antwortet das Theme nur auf ORDER BY `date` DESC.
PS Nicht auf die Schaufel schlagen :)
Antworten: Dann so:
Bestellung nach zak desc, Datum desc
Frage: Sortieren nach nach Feld mit den Werten 1,1a, 1b, 2,2a, 3 usw.
Guten Tag!
Bitte helft einem Neuling:
In der Tabelle "name" gibt es ein Feld namens "noname" mit Werten, die eine Zahl und einen Buchstaben enthalten -
Wählen Sie noname aus der Namensreihenfolge nach noname aus;
Gibt ein Ergebnis wie dieses:
"1"
"10"
"10 A"
"10c"
"10d"
"11"
"11a"
"11b"
"12"
"13"
"14"
"14b"
"14c"
"14d"
"15"
"16"
"17"
"18"
"19"
"1a"
"1b"
"1c"
"2"
"20"
"20a"
"20b"
"21"
"21a"
"21b"
"21c"
"21d"
"21e"
"22"
"23"
"23b"
"23c"
"24"
"24b"
"25"
"26"
"27"
"27a"
"3"
"30"
"31"
"32"
"3a"
"4"
"40a"
"40b"
"41"
"41b"
"41c"
"42a"
"43"
"43b"
"43c"
"43d"
"44"
"45"
"45a"
"45b"
"45c"
"45d"
"4b"
"4c"
"4d"
"4e"
"5"
"5a"
"6"
So bestellen Sie, dass zuerst nach Nummer und dann nach Buchstaben sortiert wird, d. h. -
1
1a
1b
1c
2
3
3a
4
4b
4c
4d
usw..
Antworten: Novichek_nes,
sehr ähnlich zu HEX
ORDER BY DECODE (LPAD (noname, 16, "0"), "HEX")
Frage: Sortierung nach mehreren Feldern je nach Bedingung
Sagen Sie mir, wie ich je nach Bedingungen am besten nach mehreren Feldern und in aufsteigender / absteigender Reihenfolge sortiere?
nur ein paar spalten, alles ist einfach
Fall @ sortcolumn1
wenn "Spalte1" dann Spalte1
wenn "Spalte1" dann Spalte2
Ende
Fall @ sortcolumn2
wenn "Spalte1" dann Spalte1
wenn "Spalte1" dann Spalte2
Ende
aber wie fügt man eine weitere ASX / DESC-Option hinzu?
Antworten: In solchen Fällen ist es effizienter, nach der Clientanwendung zu sortieren.
Laden mit SQL Loader (Sqlldr) von einer Datei in mehrere Felder der Datenbank.
Beispielaufgabe:
Die Datei enthält die Felder - field1; Feld2; Feld3
Es gibt eine Tabelle mit Feldern - field1; Feld2; Feld3; field4 - beim Laden von Daten aus unserer Datei sollten die gleichen Werte im zweiten und vierten Feld erhalten werden - field2 = field4.
Die Felder sind unterschiedlich lang.
Wie schreibe ich in diesem Fall eine Steuerdatei zum Laden von Daten?
Frage: die Anzahl der Datensätze in mehreren Feldern zählen
Können Sie mir bitte sagen, wie man auf mehrere Felder zählen kann? Angenommen, Sie haben eine Tabelle Car mit den Feldern Production_Year und Make. Sie müssen eine parametrische Eingabe von Werten vornehmen und berechnen, wie viele Autos der angegebenen Marke des angegebenen Baujahrs in der Tabelle enthalten sind.
Danke.
Antworten: Ausstellungsstück, alle Zählungen sollten nach dem Datensatzcode erfolgen, die Kombination der Mark-Jahr-Felder in der Tabelle sollte indiziert werden
Frage: So erhalten Sie die Sequenznummer (aber nicht die ID) in einer Abfrage mit ORDER BY
Guten Tag,
Erzähl einem Neuling:
Angenommen, Sie haben eine einfache Tabelle:
CREATE TABLE Liste (ID INTEGER PRIMARY KEY AUTOINCREMENT NICHT NULL, Name VARCHAR (100), Ort VARCHAR (100)) CREATE INDEX NameIdx ON Liste (Name); CREATE INDEX CityIdx ON Liste (Stadt);
Und es gibt viele (sagen wir eine Million) Einträge darin. Zur Anzeige der Tabelle wird eine einfache Paginierung durch OFFSET x LIMIT 500 verwendet.
Wenn die Tabelle nach ID sortiert ist, ist alles klar - der neue Datensatz befindet sich auf der letzten Seite. Was aber, wenn der Benutzer vor dem Hinzufügen des Datensatzes nach dem Feld Name sortieren möchte? Wie kann man in diesem Fall verstehen, auf welcher Seite es sich befindet, d.h. Welcher Offset sollte in OFFSET stehen? Und wenn Sie sich entscheiden, nach zwei Feldern zu sortieren - ORDER BY Name, City - wie soll man verstehen, auf welcher Seite der hinzugefügte Datensatz sein soll, ohne die gesamte Abfrage durchzugehen?
Grob gesagt müssen Sie COUNT (*) der Anzahl der Datensätze erhalten, die VOR dem neu hinzugefügten liegen, wobei die Sortierung nach Feldern berücksichtigt wird.
Ich danke Ihnen für Ihre Hilfe!
Antworten:
Das Feld, nach dem die Sortierung im Raster aktiviert wird, spielt im neuen Datensatz keine Rolle ... Aber gibt es Datensätze in anderen, wichtigeren Feldern? Zumindest Ausweis? Können Sie den neu hinzugefügten Datensatz überhaupt in der Datenbank finden? Hinweis: Lesen Sie mehr über AUTOINKREMENT
UND?
< "jonny"
and
City >"Moskau"
und für eine leere Stadt:
Wählen Sie die Anzahl (*) aus der Tabelle aus, in der Name< "jonny"
and
City is
null
И делай себе соответствующие условия больше-меньше или null в зависимости от того какая там у тебя сортировка включена и что в искомой строке задано.
Nun, wenn Sie wirklich wollen, dann können Sie es natürlich klären ... Benutzer werden grummeln und spucken, aber das ist ihr Problem, oder?
Es gibt eine solche Idee, die wichtigsten informativen Daten in der Tabelle
--das ist der vollständige Name
--und mehrere Felder mit Telefonnummern, die dem vollständigen Namen zugeordnet sind
- (andere Felder sind Regionen, Betreiber und andere Informationen).
In der Datenbank müssen Sie eine Auswahl treffen, um unter allen vollständigen Namen nach einer bestimmten Telefonnummer zu suchen und alle Informationen dazu anzuzeigen (Telefonnummer, alle vollständigen Namen, wo sie vorkommen, Region).
Frage: Wie organisiert man Datensätze mehrerer Telefonnummern für eine bequemere Suche und Anzeige von Informationen?
- Ich habe 6 Felder mit Telefonnummern für jeden vollständigen Namen
- und wie formuliere ich eine Anfrage zur Suche nach einer bestimmten Nummer unter Verwendung mehrerer Felder mit Telefonnummern?
Antworten: deine Tabellen sind nicht normalisiert
Tab1 ist mit Tab2 verwandt als 1: M
--id1
--Vollständiger Name
--idcity
Tab2
--id2
--id1
--Netz
--Verbindung
--Zimmer
STADTVERZEICHNIS
--idcity
--Name
--idRegion
Verzeichnis Regionen
--idRegion
--Name
Beim Abrufen von Daten kann es wichtig sein, diese in einer bestimmten geordneten Form zu erhalten. Die Sortierung kann nach jedem Feld mit jedem Datentyp durchgeführt werden. Bei numerischen Feldern kann dies eine aufsteigende oder absteigende Sortierung sein. Bei Zeichenfeldern (Textfeldern) kann dies eine alphabetische Sortierung sein, obwohl es sich im Wesentlichen auch um eine aufsteigende oder absteigende Sortierung handelt. Es kann auch in jede Richtung ausgeführt werden - von A nach Z und umgekehrt von Z nach A.
Das Wesen des Sortierprozesses besteht darin, die Reihenfolge in eine bestimmte Reihenfolge zu bringen. Mehr zum Sortieren erfahren Sie im Artikel "Sortieralgorithmen" Zum Beispiel eine beliebige Zahlenfolge in aufsteigender Reihenfolge sortieren:
2, 4, 1, 5, 9
sollte eine geordnete Reihenfolge ergeben:
1, 2, 4, 5, 6
Ebenso beim Sortieren aufsteigender Zeichenfolgenwerte:
Ivanov Ivan, Petrov Peter, Ivanov Andrey
das ergebnis sollte sein:
Ivanov Andrey, Ivanov Ivan, Petrov Petr
Hier ging die Zeile "Ivanov Andrey" an den Anfang, da der Vergleich von Strings zeichenweise durchgeführt wird. Beide Zeilen beginnen mit den gleichen Zeichen "Ivanov". Da das Zeichen „A“ im Wort „Andrey“ im Alphabet früher vorkommt als das Zeichen „I“ im Wort „Ivan“, wird diese Zeile früher platziert.
Sortieren in einer SQL-Abfrage
Um eine Sortierung durchzuführen, muss der Befehl ORDER BY zur Abfragezeichenfolge hinzugefügt werden. Nach diesem Befehl wird das Feld angezeigt, nach dem die Sortierung durchgeführt wird.
Als Beispiele verwenden wir die Warentabelle:
num (Artikelnummer) | Titel (Titel) | Preis (Preis) |
1 | Mandarin | 50 |
2 | Wassermelone | 120 |
3 | Eine Ananas | 80 |
4 | Banane | 40 |
Die Daten sind bereits nach der Spalte "num" sortiert. Lassen Sie uns nun eine Abfrage erstellen, die eine Tabelle mit alphabetisch sortierten Produkten anzeigt:
WÄHLEN * VON WARENBESTELLUNG NACH Titel
SELECT * FROM Waren - zeigt an, alle Felder aus der Warentabelle auszuwählen;
ORDER BY - Sortierbefehl;
title - die Spalte, nach der sortiert werden soll.
Das Ergebnis der Ausführung einer solchen Abfrage ist wie folgt:
num | Titel | Preis |
3 | Eine Ananas | 80 |
2 | Wassermelone | 120 |
4 | Banane | 40 |
1 | Mandarin | 50 |
Sie können auch nach allen Tabellenfeldern sortieren.
Sortierrichtung
Standardmäßig sortiert ORDER BY in aufsteigender Reihenfolge. Um die Sortierrichtung manuell zu steuern, wird nach dem Spaltennamen das Schlüsselwort ASC (aufsteigend) oder DESC (absteigend) angegeben. Um unsere Tabelle in absteigender Preisreihenfolge anzuzeigen, müssen Sie die Abfrage also wie folgt einstellen:
WÄHLEN * AB Ware BESTELLEN NACH Preis DESC
Die Sortierung in aufsteigender Reihenfolge des Preises ist:
WÄHLEN * AB Ware BESTELLEN NACH Preis ASC
Nach mehreren Feldern sortieren
SQL ermöglicht das Sortieren nach mehreren Feldern gleichzeitig. Dazu werden nach dem Befehl ORDER BY die erforderlichen Felder durch Kommas getrennt. Die Reihenfolge im Ergebnis der Abfrage wird in der Reihenfolge angepasst, in der die Sortierfelder angegeben sind.
Spalte1 | Spalte2 | Spalte3 |
3 | 1 | C |
1 | 3 | C |
2 | 2 | B |
2 | 1 | B |
1 | 2 | ein |
1 | 3 | ein |
3 | 4 | ein |
Sortieren wir die Tabelle nach den folgenden Regeln:
WÄHLEN * FROM mytable ORDER BY Spalte1 ASC, Spalte2 DESC, Spalte3 ASC
Jene. die erste Spalte ist aufsteigend, die zweite absteigend, die dritte wieder aufsteigend. Die Abfrage ordnet die Zeilen nach der ersten Spalte und dann, ohne die erste Regel zu verletzen, nach der zweiten Spalte. Dann auf die gleiche Weise, ohne die bestehenden Regeln zu verletzen, gemäß dem dritten. Das Ergebnis ist der folgende Datensatz:
Spalte1 | Spalte2 | Spalte3 |
1 | 3 | ein |
1 | 3 | C |
1 | 2 | ein |
2 | 2 | B |
2 | 1 | B |
3 | 1 | ein |
3 | 1 | C |
Reihenfolge von ORDER BY in einer Abfrage
Das Sortieren von Zeilen wird meistens zusammen mit einer Bedingung für die Datenauswahl durchgeführt. Der Befehl ORDER BY wird nach der WHERE-Auswahlbedingung platziert. Zum Beispiel wählen wir Produkte mit einem Preis von weniger als 100 Rubel aus und sortieren nach Namen in alphabetischer Reihenfolge:
WÄHLEN * AB Ware WO Preis 100 NACH Preis BESTELLEN ASC
- Gedankenanregung aus der Ferne: Methoden und Schritt-für-Schritt-Anleitungen
- Gedankenvorschlag: Wie geht das?
- Anschlussschemata Heizungspumpe: Einbaumöglichkeiten und Schritt-für-Schritt-Anleitung
- Installationsschema einer Pumpe in der Heizungsanlage eines Privathauses
- Verfüllung und Bodenverdichtung
- Ministerium für Bauwesen und Wohnungswesen und Kommunale Dienste der Russischen Föderation (Minstroy)
- Ministerium für Bauwesen und Wohnungswesen und Kommunale Dienste der Russischen Föderation (Minstroy)
- Stromversorgung einer Baustelle Beispielschätzung für eine temporäre Stromversorgung
- Wie wählt man wasserbasierte Polyvinylacetatfarben?
- Was ist der Unterschied zwischen einer temporären Stromversorgung einer Baustelle und einer permanenten Stromversorgung einer temporären Stromversorgung einer Baustelle?
- Beispiel für eine Schätzung von Lüftungs- und Luftkanälen
- Anfrage für Exkursionsausflug zum Vulkan Ätna
- Seydozero-See "Perle des Kola-Landes"
- Unzureichende Wirtschaftlichkeit: persönliche Erfahrung eines Fluges mit Transfer Docking in München 1 Stunde
- Wir stellen einen Gasgenerator für ein Auto selbst her Gasgeneratorautos auf Holzschema
- Wasserverbrauchsformel - Beispiel für die Berechnung des Hauswasserverbrauchs
- Ich habe geträumt, dass ich baden würde. Warum im Traum schwimmen? Was war das Wasser?
- Diät zur Gewichtsreduktion - Regeln und Tagesablauf
- Sennablätter zur Gewichtsreduktion: Bewertungen und Anwendungsregeln
- Traumdeutung einer Umarmung mit einem Mann, der mag