Mysql ORDER BY verwenden von Datums-Daten-Zeile

Habe ich eine Abfrage so etwas wie dieses:

SELECT 
 title, desc, date 
FROM 
 tablename 
ORDER BY 
 date ASC, title ASC;

Funktioniert gut, wenn die Daten tatsächlich hat ein Datum. Problem ist, das Datum der Einreichung ist optional, so bekomme ich manchmal 0000-00-00 als Datum, die hat den unglücklichen Effekt, dass alle nondated Reihen auf der Oberseite.

So, ich habe dann dies versucht:

SELECT 
 title, desc, date 
FROM 
 tablename 
ORDER BY 
 date DESC, title ASC;

Welche Art von Werken, aber auch nicht wirklich -- alle Artikel mit Datum (nicht 0000-00-00) bekommen in absteigender Reihenfolge aufgeführt, gefolgt von allen Elementen mit 0000-00-00.

Was ich tun möchte ist die order by Datum ASC, Titel ASC, aber nur, wenn das Datum != 0000-00-00, aber wenn date = 0000-00-00, dann BESTELLEN Sie einfach nach Titel ASC auf diesen (ich glaube, ich erklärte, dass richtig).

Die einzigen Möglichkeiten, die ich denken kann, dies zu tun, nicht SQL-basiert (entweder 2 Abfragen, oder jeder Abfrage nur füllt eine in-memory-array, und dann habe ich das Sortieren mit PHP).

Gibt es eine SQL-Abfrage, die dies tun können?

  • Macht MySQL nicht unterstützt NULL-Termine?
InformationsquelleAutor OneNerd | 2009-05-19
Schreibe einen Kommentar