今天项目中遇到一个对sql查询结果需要按字段 “自定义” 排序的问题。
如:默认是 0,1,2。结果为 1,0,2或 1,2,0;
mysql 中使用 field('field',....) 注:第一个field为关键字,‘field’ 为要指定的字段。
select t.* from tbl_obj_order t order by field(status,2,3,1,0,-1)
select t.* from tbl_obj_order t where status in(-1,0,1,2,3) order by field(status,2,3,1,0,-1)
两种方式的结果相同。
注意的问题:
1. 排序规则(字段可能的值)尽量写全!!
当order by field(.......) 时,如果后面的排序字段没有写全(2,3,1,0)时:
a).如果查询的结果里 的数据中其字段 不包含 省略的值(-1),则结果 不 影响。
b).如果查询的结果里 的数据中其字段 包含 省略的值(-1),则结果 会 影响(默认的方式了)。