アクティブなキャンペーンでテーブルを注文しようとしていますが、その後に "endDate"が続きます。つまり、新たに作成されたキャンペーンが常に先頭に表示され、その後に日付が表示されます。キャンペーンが終了すると、最新の「endDate」が一番上に表示されます。ここで"id"でMySQLを注文し、次に "date"で
は、以下の私のクエリです:
SELECT campaignId,
status,
dateCreated,
startDate,
endDate
FROM campaign
WHERE deleted='False'
ORDER BY DATE(endDate) > DATE(CURDATE()) DESC, campaignId DESC
下のスクリーンショットを見ると、いくつかは(赤いボックスで強調)「endDateに」
によって順序付けされていない最初の部分は、その正しいです"endDate"が終了せず、最初にidでソートされていることを意味します。しかし、最後の部分は間違っています、終了キャンペーンは "endDate"でソートする必要があります。私が間違っていた場所?
更新SQLフィドル(使用しているときWHERE deleted='False'
を無視してください):これは動作するはずhttp://sqlfiddle.com/#!9/0a7afb
http://sqlfiddle.comで、テーブル構造とサンプルデータと予想される結果とともに疑問を作成してください。 –
作成されました...もう一度確認してください – nodeffect