Heim > Datenbank > MySQL-Tutorial > Wie sortiere ich PostgreSQL-Daten mit Nullen und einem Sonderfallwert (-1)?

Wie sortiere ich PostgreSQL-Daten mit Nullen und einem Sonderfallwert (-1)?

Barbara Streisand
Freigeben: 2024-12-29 18:16:10
Original
580 Leute haben es durchsucht

How to Sort PostgreSQL Data with Nulls and a Special Case (-1) Value?

Sortieren von Werten mit Sonderfällen in PostgreSQL

Diese Diskussion dreht sich um das Ordnen von Daten aus einer PostgreSQL-Tabelle namens „Aufgaben“. Jede Aufgabe verfügt über ein optionales Feld namens „Sortieren“. Das Ziel besteht darin, Sortieraufgaben ohne „Sortier“-Werte nach allen anderen zu priorisieren, mit Ausnahme derjenigen mit „-1“ als Sortierwert, die nach allen anderen erscheinen sollten.

Beachten Sie die folgenden Beispieldaten:

id f_id name sort
1 1 zeta -1
2 1 alpha 1
3 1 gamma 3
4 1 beta 2
5 1 delta
6 1 epsilon

Die alleinige Verwendung von COALESCE(sort,99999) gruppiert Nullwerte nach Nicht-Nullwerten, behandelt jedoch nicht den Sonderfall von „-1.“

Die Lösung nutzt den booleschen Datentyp von PostgreSQL, um die gewünschte Sortierreihenfolge zu erreichen:

SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Nach dem Login kopieren

Diese Abfrage macht sich die Tatsache zunutze, dass der Vergleich „(sort IS NOT DISTINCT FROM -1)“ wird für alle Werte als FALSE ausgewertet, mit Ausnahme von „-1“, das selbst als TRUE ausgewertet wird. Wenn Sie zuerst nach diesem Ausdruck sortieren, werden die „-1“-Werte unabhängig von ihren Sortierwerten am Ende der Reihenfolge platziert.

Ein alternativer Ansatz unter Verwendung des DESC-Schlüsselworts wird ebenfalls vorgestellt:

SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
Nach dem Login kopieren

Beide Methoden sortieren Aufgaben effektiv ohne „Sortier“-Werte nach allen anderen und stellen gleichzeitig sicher, dass „-1“-Werte nach allen anderen Sortierwerten ungleich Null erscheinen.

Das obige ist der detaillierte Inhalt vonWie sortiere ich PostgreSQL-Daten mit Nullen und einem Sonderfallwert (-1)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage