Ich habe eine Abfrage in etwa so:
%Vor%Funktioniert gut, wenn die Daten tatsächlich ein Datum haben. Problem ist, Datum Einreichung ist optional, so dass ich manchmal als Datum, das die unglückliche Wirkung der Platzierung aller nicht aufgeführten Zeilen an der Spitze hat, erhalten.
Also, ich habe es dann versucht:
%Vor%Welche Art von Arbeiten, aber nicht wirklich - alle Artikel mit Daten (nicht-0000-00-00) werden in absteigender Reihenfolge aufgelistet, gefolgt von allen Artikeln mit dem gleichen Datum.
Was ich tun möchte, ist die Reihenfolge nach Datum ASC, Titel ASC, aber nur wenn das Datum! = 0000-00-00, aber wenn das Datum = Jahr ist, dann nur ORDER BY Titel ASC auf diesen ( Ich denke, ich habe das richtig erklärt).
Die einzigen Möglichkeiten, dies zu tun, sind nicht-SQL-basiert (entweder 2 Abfragen oder jede Abfrage füllt nur ein In-Memory-Array und dann sortiere ich mit PHP).
Gibt es eine SQL-Abfrage, die das kann?
Ihre 2-Abfrage-Lösung ist eine gute, Sie können alles in SQL mit dem % Befehl co_de% .
Die erste Abfrage bezieht sich auf Daten, die nicht Null sind, und UNION in der Abfrage für Daten, die Null sind.
Bearbeiten: Etwas wie:
%Vor% Dies ist möglicherweise in dieser Instanz nicht sehr nützlich, aber für komplexe Abfragen kann UNION
nützlich sein.
Tags und Links sql php mysql sql-order-by