Oracleorder by用法

此文来源于CSDN中zxcvg的博文

1、ORDER BY 中关于NULL的处理

缺省拍卖,Oracle在Order by
时觉得null是不过特别价值,所以若是ASC升序则免在终极,DESC降序则排在极度前。

本来,你吗可以使用nulls first 或者nulls last 语法来决定NULL的岗位。
Nulls first和nulls last是Oracle Order by支持的语法
倘Order by 中指定了表达式Nulls
first则象征null值的笔录将免去在最前(不管是asc 还是 desc)
如Order by 中指定了表达式Nulls last则意味null值的笔录将消除在结尾
(不管是asc 还是 desc)
用语法如下:
–将nulls始终位于最前
select * from zl_cbqc order by cb_ld nulls first
–将nulls始终在最后
select * from zl_cbqc order by cb_ld desc nulls last

2、几栽排序的写法
单列升序:select<column_name> from <table_name> order by
<column_name>; (默认升序,即使不写ASC)

单列降序:select <column_name> from <table_name> order by
<column_name> desc; 
大多排列升序:select <column_one>, <column_two> from
<table_name> order by <column_one>,
<column_two>; 
多排降序:select <column_one>, <column_two> from
<table_name> order by <column_one> desc,
<column_two> desc; 
大抵列混合排序:select <column_one>, <column_two> from
<table_name> order by <column_one> desc,
<column_two> asc;

3、今天看到底新写法

SQL> select * from tb;

    BLOGID BLOGCLASS 
———- —————————— 
        1 人生 
        2 学习 
        3 工作 
        5 朋友

SQL> select * from tb order by decode(blogid,3,1,2), blogid;

    BLOGID BLOGCLASS 
———- —————————— 
        3 工作 
        1 人生 
        2 学习 
        5 朋友

自己所说的即是达面红色的那句话。实现的效应就是是不管怎样,BLOGID为3的价值必须排除在率先各类,其他的记录按照BLOGID升序排序。

shiyiwan同学让本人之解说是这般的:“默认升序排序,blogid =
3时归1,其他则归2, 所以blogid = 3的记录消除在最好前面什么。”

wildwave同学为被了只说法:“你用大decode理解成前面select后面的排,按照那一列排序虽哼了。”

自己而去摸索了一致久语句,结果如下

SQL>  select * from tb order by decode(blogid,3,1,2);

    BLOGID BLOGCLASS


         3 工作
         5 朋友
         1 人生
         2 学习

本人现之喻是如此的,通过decode()函数,BLOGID值为3底那么长记下被更换为1,而其余的笔录都是2,那么按照此顺序排序,肯定BLOGID为3的那长长的记下永远在极端前方了,不仅如此,注意到后还加了个按BLOGID默认升序排列,这吗即对于那些让DECODE转换为2之记录以来,按照其的BLOGID升序排序

————————————————————上面为zxcvg博客中的信,下面为好测试理解内容—————————————————————————————————————————–

协调通过看上面别人写的字,理解如下:

SELECT *
FROM MYTEST
ORDER BY DECODE(SIGN(A- B), 0, 1,
-1, 2,
3);排序规则为A=B时,满足当下漫漫规则之音排第一各,A<B则免第二个。

相关文章