sql >> データベース >  >> RDS >> Mysql

MySQLのハイフンを句ごとに並べ替える

    答えは質問にあります:

    ここでのキーワードは"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の場合、結果セットを並べ替える良い方法を提供しません。 文字列タイプです。



    1. JPA EclipseLink DatabaseException:'テーブルfoo.SEQUENCEは存在しません'

    2. C#でMysqlDBに接続する-データセットでいくつか必要

    3. where句のMysqlFIND_IN_SET

    4. mysqlはテーブルのない日付を選択します