我有一個WordPress自定義發佈類型的數據庫,這個自定義發佈類型叫做事件自定義字段,用於事件的startdates和enddates。我想在列表中輸出所有這些事件,這些事件以升序列出的即將發生的事件首先按升序排列,其餘事件按降序排列。如何使用date> NOW()ASC和其餘的DESC命令SQL結果?
我試圖將代碼從這個答案複製,但我似乎無法得到它的權利 - 所有職位排序遞增:MySQL conditional ORDER BY ASC/DESC for date column
這是現在我的代碼:
SELECT p.post_title, m.meta_value
FROM wp_posts as p, wp_postmeta as m
WHERE p.ID = m.post_id
AND p.post_type = "events"
AND m.meta_key = "startdate"
AND p.post_status = "publish"
ORDER BY m.meta_value ASC,
CASE m.meta_value WHEN m.meta_value > DATE(NOW()) THEN m.meta_value END ASC,
CASE WHEN m.meta_value < DATE(NOW()) THEN m.meta_value END DESC
LIMIT 10
幾乎得到了這個工作!即將發生的事件以正確的順序顯示,但之前的事件按順序排列。任何想法爲什麼? –
m.meta_value * -1沒有做它應該做的。也許可以使用1-m.meta_value,或者查看某種類型的轉換/轉換。 –
想想我已經在這裏嘗試了一切(猜猜你做的有點像:CAST(m.meta_value AS DATE)等),但我不習慣在SQL中使用條件語句,所以我幾乎不知道我是什麼這樣做。有沒有可能以另一種方式做到這一點,比如使用連接以某種方式? –