この質問の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 を使用して並べ替えることができる回答は歓迎されますが、優先されません。