答えは質問にあります:
ここでのキーワードは"expression" 。 ORDER BY
で式を使用できます 条項。
ORDER BY -order_line_groups.sequence DESC
は数式であり、「ハイフン」はハイフンではなくマイナスです。単項マイナス数学演算子。
どのように機能しますか?
結果に関しては、期待どおりに機能します:
-
列のタイプが
と同等ですorder_line_groups.sequence
の場合 数値タイプ です。 または日付と時刻のタイプ> (これらも内部的に数値として格納されます)次に、マイナスは返された行の順序を逆にします。この句は ORDER BY order_line_groups.sequence ASC
-
列のタイプが
文字列タイプ> 次に、MySQLは値の変換 を試みます。 列の数値への変換(減算は算術演算であり、文字列に対して定義されていないため)。 MySQLが文字列を数値に変換すると、数字ではない最初の文字で停止します。列 order_line_groups.sequence
に保存するデータによって異なります 、多かれ少なかれその文字列値は数値0
に変換されます 。
速度に関しては、質問で提供されたドキュメントページで説明されているように、MySQLはインデックスを使用してORDER BY
を解決できません 。これにより、クエリが遅くなります。
結論
ORDER BY -order_line_groups.sequence
を使用する クエリが遅くなります。さらに、列のタイプがsequence
の場合、結果セットを並べ替える良い方法を提供しません。 文字列タイプです。