Sortieren mit einer Option nach oben Liste gezwungen
Frage
Ich habe eine PHP-Anwendung, die eine Liste von Optionen für einen Benutzer anzeigt. Die Liste wird erzeugt von einer einfachen Abfrage für SQL 2000. Was ich eine bestimmte Option tun möchte ist haben an der Spitze der Liste, und dann die verbleibenden Optionen alphabetisch sortiert haben.
Zum Beispiel ist hier die Optionen, wenn alphabetisch sortiert:
Calgary
Edmonton
Halifax
Montreal
Toronto
Was würde ich die Liste möchte, ist mehr wie folgt aus:
**Montreal**
Calgary
Edmonton
Halifax
Toronto
Gibt es eine Möglichkeit, dass ich dies mit einer einzigen Abfrage zu tun? Oder bin ich stecken läuft die Abfrage zweimal und die Ergebnisse anhängt?
Lösung
SELECT name
FROM locations
ORDER BY
CASE
WHEN name = 'Montreal'
THEN 0
ELSE 1
END, name
Andere Tipps
SELECT name FROM options ORDER BY name = "Montreal", name;
. Hinweis: Das funktioniert mit MySQL, nicht SQL 2000, wie die OP angefordert
create table Places (
add Name varchar(30),
add Priority bit
)
select Name
from Places
order by Priority desc,
Name
Ich hatte ein ähnliches Problem auf einer Website, die ich voller Fallberichte gebaut. Ich wollte die Fallberichte in denen das Opfer Namen der Spitze zu sortieren ist bekannt, weil sie überzeugend sind. Andererseits wollte ich die alle Fälle John Doe am Boden sein. Da dies auch Die Namen der beteiligten, hatte ich das Vorname / Nachname Sortierung Problem auch. Ich wollte es nicht in zwei Namensfelder aufgeteilt, weil einige Fälle sind nicht Menschen überhaupt.
Meine Lösung:
Ich habe ein Feld „Namen“, das ist das, was angezeigt wird. Ich habe auch ein „NameSorted“ Feld, das in allen Abfragen verwendet wird, aber wird nie angezeigt. Mein Eingang UI Pflege der Umwandlung nimmt „LAS, FIRST“ eingegeben in das Sortierfeld in die Display-Version automatisch.
Schließlich ist die Sortierung „rig“ Ich habe einfach entsprechende Zeichen zu Beginn des Sortierfeldes setzen. Da ich Sachen will am Ende kommen, habe ich „zzz“ am Anfang. Um an der Spitze zu sortieren könnten Sie setzen „!“ am Anfang. Auch hier Ihre Bearbeitung UI für Sie darum kümmern.
Ja, ich gebe es ein wenig kitschig, aber es funktioniert. Ein Vorteil für mich ist, ich habe komplexere Abfragen zu tun mit an verschiedenen Orten verbindet Seiten im Vergleich RSS usw. zu erzeugen, und ich muss nicht halten einen komplexen Ausdruck Erinnerung an die Sortierung richtig zu machen, es ist immer einfach irgendwie durch die „NameSorted "ein.
Klicken Sie auf mein Profil der resultierenden Webseite zu sehen.