【Mysql】selectはカスタム順に並べ替えられます

970 ワード

今週は新しいニーズに直面し、私たちのユーザーのために使用可能な状態のほかに、停止という状態を追加しました.次に、ユーザー・リスト・ページのソートは、使用可能な順に、使用不可になります.この2つのソートでは,時間順に逆説する.
ステータスを追加するには、対応するデータベース・テーブルにフィールドuser_を新規入力する必要があります.statusは、ユーザーのステータスを記述するために使用されます.ユーザが正常(利用可能)状態、非アクティブ状態のほかに、欠費、または違反状態などの他の状態があることを考慮すると、bitタイプではなくtiny int unsignedタイプを使用してデータ型を作成することはできません.これにより、8ビットバイナリ256の状態を用いて記述することができる.
最初の新しい機能モジュールではuser_status asc,creatimestamp descソート、(斜体はデータベーステーブルフィールドを表す)しかし、将来後者が限られている場合、このソート方式は条件を満たすことができないことを考慮している.たとえば,1は利用可能状態,2は非アクティブ状態である.現在の状況:ユーザー・リスト・ページのソートは、使用可能に従い、無効になります.この2つのソートでは,さらに時間順に逆説して満足している.ただし、プラス1状態、3は未払い状態です.では、ソート方式が先に利用可能になってから、お金を借りて、最後に停止して言えば、満足しません.
調べてみると、データベースfield(データベースフィールド、最優先コンテンツのソート、第2有限コンテンツのソート、...)を使用してソートできます.例えばselect * from account order by field(account.user_status, 0, 1) asc, created descは,まずユーザ状態0,1から順番に並べ替え,各分類でcreated逆順に並べ替える.
このように、ソート順序を定義するために使用されるフィールドは、限られた値、または列挙であることが望ましい.
データベース計算にかかわるため、対応するフィールドにインデックスを付けることが望ましい.