SQL, um einen bestimmten Datensatz oben zu haben, alle anderen unten

7

Ich versuche, eine Abfrage zusammenzustellen, die einen bestimmten Datensatz (gefunden durch die primäre ID des Datensatzes) oben anzeigt und alle anderen Datensätze darunter, sortiert nach Datum, anzeigt (ich habe "date_added" als eines der Felder in der Tabelle, zusätzlich zur primären ID).

Ich könnte das mit einer UNION machen (die erste Auswahl würde den gewünschten Datensatz finden und die andere Auswahl würde alle anderen Datensätze anzeigen), aber ich frage mich, ob es vielleicht einen besseren Weg gibt?

Ich benutze übrigens Oracle.

    
Dario 09.11.2009, 09:24
quelle

6 Antworten

17

Sie können dies tun, indem Sie nach zwei Feldern sortieren

Der erste wäre ein Ausdruck, der 0 zurückgibt, wenn die Zeile die gewünschte Zeile ist, oder 1, wenn dies nicht der Fall ist. Die Sortierung erfolgt aufsteigend, so dass Sie zuerst Ihren bevorzugten Datensatz erhalten.

Das zweite Sortierfeld wäre date_added, sodass die verbleibenden Datensätze in dieser Reihenfolge sortiert werden.

Angst, dass ich Oracle nicht in SQL Server weiß, wäre es etwa

%Vor%     
Adam 09.11.2009, 09:28
quelle
7

Ein einfacherer Weg wäre eine schicke Ordnung nach Konstrukt. Hier ist ein Beispiel für pk = 123:

%Vor%     
Andomar 09.11.2009 09:25
quelle
1

Ich kenne Oracle nicht genau, aber Sie könnten vielleicht etwas wie ..

tun %Vor%     
reko_t 09.11.2009 09:25
quelle
0
%Vor%     
kachar 27.12.2012 12:13
quelle
0

Sie können mehr als einen Datensatz nach oben mit derselben Technik sortieren

999 zuerst 998 Sekunden gefolgt von allem anderen sortiert nach Datum

Wählen Sie *

%Vor%     
Don 30.09.2014 20:58
quelle
-1

Der einfache Weg wäre, zu erkennen, dass Sie zwei getrennte Dinge anzeigen und daher in separate einfache Abfragen schreiben möchten. Eine Abfrage zum Abrufen des ersten Datensatzes und die zweite zum Abrufen der sortierten Liste. Es gibt keinen wirklichen Leistungsvorteil, mehr als das zu tun, weil nur ein einziger Datensatz existiert.

    
Michael Dillon 09.11.2009 10:30
quelle

Tags und Links