Ich habe eine SQL-Abfrage (mit Firebird als RDBMS), in dem ich die Ergebnisse von einem Feld, EDITION bestellen müssen. Ich muss jedoch nach dem Inhalt des Feldes bestellen. d.h. "NE" geht zuerst, "OE" geht an zweiter Stelle, "OP" geht an dritter Stelle, und Leerzeichen gehen zuletzt. Leider habe ich keine Ahnung, wie dies erreicht werden könnte. Alles, was ich je gemacht habe, ist ORDER BY [FIELD] ASC/DESC und sonst nichts.Reihenfolge der SQL-Abfrage nach bestimmten Feldwerten
Irgendwelche Vorschläge?
Edit: Ich sollte wirklich klarstellen: Ich hatte nur gehofft, hier mehr zu lernen. Ich habe es jetzt, dass ich nur mehrere Select-Anweisungen habe, die festlegen, was zuerst angezeigt werden soll. Die Abfrage ist ziemlich groß und ich war wirklich möglicherweise eine leistungsfähigere Art und Weise, dies zu tun zu lernen, der Hoffnung: Beispiel:
SELECT * FROM RETAIL WHERE MTITLE LIKE 'somethi%' AND EDITION='NE'
UNION
SELECT * FROM RETAIL WHERE MTITLE LIKE 'somethi%' AND EDITION='OE'
UNION
SELECT * FROM RETAIL WHERE MTITLE LIKE 'somethi%' AND EDITION='OP'
UNION (etc...)
N Eine der vorgeschlagenen Lösungen erfordert mehrere Auswahlmöglichkeiten/Vereinigungen. Sie sollten alle viel schneller und einfacher zu warten sein, und die Abfrage wird VIEL einfacher zu lesen sein. –
Ich gehe mit Peter LaComb über dieses Thema. Warum verwenden Sie UNIONs? Es gibt keine Notwendigkeit Ich würde gehen mit SELECT * FROM Retail WHERE MTITLE WIE 'Somethi%' UND EDITION IN ('NE', 'OE', 'OP', '') ORDER BY CASE EDITION Wenn 'NE' Dann 1 Wenn 'OE' Dann 2 Wenn 'OP' Dann 3 Else 4 Ende – Pulsehead
@Pulsehead können Sie die Antwort finden, warum ich irgendwo in dieser StackOverflow-Frage Gewerkschaften benutzt hätte, um nicht zu wissen, wie man Felder am besten bestellt. – Cyprus106