我们知道,oracle或者是mysql语句中的排序就是使用order by这个关键字,然后在后面跟上字段,再用asc和desc表示升序还是降序就可以了,相对复杂些就是在排序的字段上套上一定的函数即可。
例如:
SELECT
*
FROM
t_student t
ORDER BY
t.address ASC,
LEFT (t.birth, 10) DESC;
如果我们想要用我们自定义的顺序显示,那么就需要做一些改变,比如我要以地址中为“杭州”的排在第一位,“上海”的排在第二位,“北京”排在第三位这样子,那么要怎么操作呢?
MYSQL中的方法
order by FIELD(t.address,'杭州','上海','北京');
ORCLE中的方法
order by DECODE(t.address,'杭州',1,'上海',2,'北京',3);
或者
order by
CASE
WHEN t.address='杭州' THEN 1
WHEN t.address='上海' THEN 2
WHEN t.address='北京' THEN 3
END;
额外的,如果需要分组排序,则如下
oracle的方法,mysql没有经历过:
row_number() over(partition by 分组字段 order by 排序字段) AS 字段别名
在查询语句中增加上述语句作为新字段即可看到排序结果。
内容来源于网络,由自己验证。
Comments | NOTHING