这是这个问题的sqlfiddle.
我有一张类似的学生桌
student_id | first_name | doing_well
-----------+------------+-----------
1 | John | NULL
2 | Jane | NULL
3 | Steve | 0
4 | Sue | 1
5 | James | 0
Run Code Online (Sandbox Code Playgroud)
我想要做的是根据doing_well田地命令学生.表现良好的学生1应该排在最前面,表现不佳的学生应该排在最前面,而表现不佳0的学生NULL应该处于中间位置.
我尝试过使用但ORDER BY FIELD()没有成功
SELECT
*
FROM
students
ORDER BY
FIELD(doing_well,'0',NULL,'1')
Run Code Online (Sandbox Code Playgroud)
我真的想完成这个并保持未定义NULL,而不必将undefined 更改为值.
最终结果应该是这样的
4 | Sue | 1
1 | John | NULL
2 | Jane | NULL
3 | Steve | 0
5 | James | 0
Run Code Online (Sandbox Code Playgroud)
或者,可以使用PHP在查询之后进行排序的Answers是受欢迎的但不是首选的.
order by
case
when doing_well = 1 then 0
when doing_well is null then 1
else 2
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |