一、简单排序(number)
Mysql:
ASC 升序 空——小——大
Desc 降序 大——小——空
Oracle:
ASC 升序 小——大——空
Desc 降序 空——大——小
用法:
SELECT a.name,a.age_ID FROM A a ORDER BY a.ageDESC
SELECT a.name,a.age as aa_ID FROM A a ORDER BY aaDESC
SELECT a.name,a.age_ID FROM A a ORDER BY 2 DESC
可以使用列名进行排序,也可以用列名所在的位置进行排序
二、多个字段排序(number)
说明:当两个字段同时进行排序的时候,当第一个字段相同时,才根据第二个字段进行排序。
用法:SELECT ju.NAME,ju.ROLE_ID,ju.EXPERIENCE FROM jspt_user ju ORDER BYju.ROLE_ID ASC, ju.EXPERIENCE ASC
三、字符串排序(varchar)
Mysql:
ASC 升序空——数字(1-9)——字母(a-z不区分大小写)
Desc 降序 字母(z-a不区分大小写)——数字(9-1)——空
Oracle:
ASC 升序 数字(1-9)——字母(大写)——字母(小写)——空
Desc 降序 空——字母(小写z-a)——字母(大写)——数字(9-1)
说明:aaa 和aaa123 在升序时,aaa在aaa123之前
四、子串排序
说明:按照身份证的后5位进行排序
例:SELECT ju.ACCOUNT,ju.ID_CARD_NUM,SUBSTR(ID_CARD_NUM,-5) AS num
FROM jspt_user ju ORDER BY num DESC
五、按照字符串和数字混合中的字符串进行排序(oracle)
说明:此时要把某一列的数字替换成空格,使用字符串函数translate(替换列,需替换的地方,替换成)
例:SELECT ju.ACCOUNT,ju.NAME,translate(ACCOUNT,'-0123456789','-')as acc FROM jspt_user ju ORDER BY acc DESC
六、空值在前(oracle)
说明:空值在前,其他升序排序,mysql 升序,空值本来就放在前面
例:SELECT ju.ACCOUNT FROM jspt_user ju ORDER BY ACCOUNT NULLSfirst
七、优先排序
说明:搭配case when 进行排序
例:SELECT * FROM jspt_user ju ORDER BY CASE WHEN ju.CREATE_SOURCE = '1' THEN 1 ELSE 0 end DESC
字段为create_source=1时,优先排序