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 Mandarin50
2 Wassermelone120
3 Eine Ananas80
4 Banane40

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 Ananas80
2 Wassermelone120
4 Banane40
1 Mandarin50

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 Mandarin50
2 Wassermelone120
3 Eine Ananas80
4 Banane40

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 Ananas80
2 Wassermelone120
4 Banane40
1 Mandarin50

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

Die Wahl des Herausgebers
Navigationskarten können in einer Vielzahl von Situationen nützlich sein. Entweder verirrt man sich im Wald, oder man sucht die nötige Straße in der Stadt....

Wenn du Minecraft schon lange spielst, dann wird es für dich kaum ein Geheimnis sein, dass in diesem Spiel die ungewöhnlichsten Entdeckungen gemacht werden können....

Unter einem Upgrade kann man sowohl den Austausch von Teilen eines Fahrrads als auch die Erweiterung seiner Möglichkeiten verstehen, beispielsweise durch den Kauf von Zubehör. Die meisten Dinge ...

Gedanken aus der Ferne zu übermitteln, klingt schon jetzt nach einem unnatürlichen Vorgang. Aber es ist möglich. Und Sie können dies nicht nur tun, indem Sie ...
Navigationskarten können in einer Vielzahl von Situationen nützlich sein. Entweder verirrt man sich im Wald, oder man sucht die nötige Straße in der Stadt....
Hallo liebe Leser! Wir müssen Menschen in unterschiedlichen Situationen überzeugen: im Beruf, in der Schule, im Privatleben. Erinnere dich an das letzte...
Heute werde ich mich weiterhin mit der Kunst des Überredens befassen und darüber sprechen, wie man eine Person davon überzeugt, dass man Recht hat, wie man andere Menschen überzeugt ...
Die moderne Welt ist die Kunst der Kommunikation. Der größte Teil Ihres Lebens hängt davon ab, wie Sie wissen, wie Sie mit anderen kommunizieren und erreichen ...
Durchfall ist ein unangenehmer Zustand, der vielen Menschen häufig passiert. Es gibt viele Gründe für sein Aussehen, aber wenn es ...