MySQL の ORDER BY 句でカラムの別名が使えない

MySQL

この記事は最終更新日から1年以上が経過しています。

開発で下記のようなSQLを書きました。

受注番号でソートされた結果が返ってくると思っていたのですが実際の結果は

(すこし分かりにくいですが、)受注番号でソートされていません。
受注番号でソートするにはどうすればいいのでしょうか?


検索して出てきた個人ブログを何件か見てみると、ORDER_BY 句のクオートを外すと動くという記述を見つけました。
試してみます。

おお!確かに受注番号でソートされました。
が、どうしてなのでしょう…?


さらに調べてみました。
MySQL公式ドキュメントのカラムエイリアスに関する問題というページに原因が書かれていました。

ステートメント内のどこに指定する場合でも、エイリアスへの引用した参照には、識別子引用符を使用する必要があります。そうしないと、参照は文字列リテラルとして扱われます。たとえば、次のステートメントはカラム id の値によってグループ化され、エイリアス `a` を使用して参照されます。

要するに「ORDER BY や GROUP BY でカラムの別名を指定する時はクオートじゃなくてバッククオートで囲む。そうでないとカラム名として見てもらえない」ということみたいです。
クオートを外したときに動いたのは… MySQL がいい感じに「察して」くれたのでしょうか?
という訳で、以下のSQLがドキュメント的に正しいものになります。

MySQL