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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre 2 Abfrage-Lösung ist eine gute, Sie können es tun, alle in SQL mit Hilfe der
UNION
Befehl.Die erste Abfrage wird für Termine, die nicht null sind, dann UNION in der Abfrage für die Termine, sind gleich null.
Edit: so Etwas wie:
Dies ist möglicherweise nicht sehr nützlich sein in diesem Fall, aber für komplexe Abfragen
UNION
kann in handliches kommen.