いくつかのイベントに関する情報を格納するテーブルがあります。
それらのイベントをリストしたいのですが、今後のイベントを最初に昇順で表示し、過去のイベントを下に降順で表示したいと思います。
私はおそらくこのようなことをしたいと思います:
(SELECT * FROM events WHERE date > NOW() ORDER BY date ASC)
UNION
(SELECT * FROM events WHERE date < NOW() ORDER BY date DESC)
MySQLのドキュメントを確認したところ、UNIONは通常、順序付けされていない行のセットで機能するため、各SELECTを使用した順序付けはまったく役に立たないことがわかりました。どちらのUNIONALLもその仕事をしていないようです。
少しグーグルした後、SELECTが行を生成した順序で行を並べ替える方法はわかりましたが、同じ列で異なる順序で行を並べ替える方法はまだわかりません。
2つのSELECTを実行するだけで十分だと思います。1つは今後のイベント用、もう1つは過去のイベント用です。でも、たった1回のクエリでできるのではないかと思います。
何か提案できることはありますか?