不規則な順序で2列に基づいて行をソートする方法はmysql-?

baig772:

私は以下の構造を持つテーブルを持っています

id| name | read | status   | is_assigned | created_at
1 | ABC  | 0    | ordered  | 0           | 2020-03-27 11:48:38
2 | XYZ  | 1    | accepted | 1           | 2020-03-27 11:48:38
3 | DEF  | 0    | ordered  | 0           | 2020-03-25 11:48:38
4 | JKL  | 1    | accepted | 0           | 2020-03-16 11:48:38
5 | GHI  | 1    | on-hold  | 1           | 2020-03-23 11:48:38

私は以下のように優先順位ソート順にしたいです:

  1. ここで、読み取り= 0
  2. ステータス=注文した場合は
  3. ここで、状態=受け入れられますが、is_assigned = 0
  4. 並び替え created_at DESC

私が持っているクエリは、のためにのみ有効であるcreated_atreadの列すなわち

select * from orders order by read ASC, created_at DESC

どのように私は説明したテーブルに対してソート順を上に実現し、Laravelクエリビルダでこのクエリをマッピングすることができます

TIA

GMB:

あなたは直接あなたのロジックを翻訳することができますorder by条件は評価するMySQLの能力使用して、句0/1の値を:

order by
    (read = 0) desc,
    (status = 'ordered') desc,
    (status = 'accepted' and is_assigned = 0) desc,
    created_at

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=364646&siteId=1