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

MySQL

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

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

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

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


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

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


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

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

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

MySQL


Connection Information

To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed. If you do not remember your credentials, you should contact your web host.

Connection Type