Ich versuche, meine Tabelle durch aktive Kampagne zuerst gefolgt mit der "EndDate" zu bestellen. Das bedeutet, dass neu erstellte Kampagnen immer an der Spitze stehen, gefolgt von dem Datum. Wenn die Kampagne endet, möchte ich, dass das neueste "endDate" ganz oben steht.MySQL Bestellung von "ID" zuerst dann von "Datum"
Hier ist meine Abfrage unter:
SELECT campaignId,
status,
dateCreated,
startDate,
endDate
FROM campaign
WHERE deleted='False'
ORDER BY DATE(endDate) > DATE(CURDATE()) DESC, campaignId DESC
im Screenshot unten suchen, sind einige nicht von der „endDate“ bestellt (mit roten Kasten markiert)
Der erste Teil richtig ist, die bedeutet, dass "endDate" nicht endet und zuerst nach id sortiert wird. Der letzte Teil ist jedoch falsch, beendete Kampagnen sollten nach dem "endDate" sortiert werden. Wo ich falsch gemacht habe?
aktualisieren SQL Fiddle (Bitte ignorieren WHERE deleted='False'
bei der Verwendung): http://sqlfiddle.com/#!9/0a7afb
Bitte erstellen Sie eine Geige auf http://sqlfiddle.com mit der Tabellenstruktur und den Beispieldaten zusammen mit dem erwarteten Ergebnis in die Frage. –
Es ist erstellt ... bitte überprüfen Sie noch einmal – nodeffect