0

この質問のsqlfiddleは次のとおりです。

次のような学生テーブルがあります

student_id | first_name | doing_well
-----------+------------+-----------
1          | John       | NULL
2          | Jane       | NULL
3          | Steve      | 0
4          | Sue        | 1
5          | James      | 0

私がやろうとしているのは、doing_well分野に従って学生を注文することです。成績の良い生徒1を上に、成績の悪い生徒0を一番下に、成績が不明な生徒をNULL真ん中に配置します。

使用ORDER BY FIELD()してみましたが成功しませんでした

SELECT
  *
FROM
  students
ORDER BY
  FIELD(doing_well,'0',NULL,'1')

私は本当にこれを達成し、未定義をそのままにしてNULL、未定義を値に変更する必要がないようにしたいと思っています。

最終結果は次のようになります

4  | Sue   | 1
1  | John  | NULL
2  | Jane  | NULL
3  | Steve | 0
5  | James | 0

または、クエリの後に PHP を使用して並べ替えることができる回答は歓迎されますが、優先されません。

4

2 に答える 2