【Oracle命令】sql语句之排序(order by)

栏目:技术教程 发布时间 2020-10-16 人气 

来源:http://www.mamicode.com/info-detail-2822901.html

TAG:无

侵权:admin@heimacode.com

免责声明:本文图片引用自网络,如有侵权请联系我们予以删除

黑码网发布此文仅为传递信息,不代表黑码网认同其观点。

简介:标签:sdn处理image集合columnpos没有uploadlike通过对数据库数据进行降序排序来达到显示最新数据在前面的效果-- 降序排序(最新的显示在前面)SELECT * FROM 表名 t ORDER BY t.uploadDatetime DESC;格式:ORDER BY { column-Name | ColumnPosition | Expression } [ ASC |...

标签:sdn   处理   image   集合   column   pos   没有   upload   like   

通过对数据库数据进行降序排序来达到显示最新数据在前面的效果

-- 降序排序(最新的显示在前面)
SELECT * FROM 表名 t ORDER BY t.uploadDatetime DESC;

格式:

ORDER BY { column-Name | ColumnPosition | Expression }
    [ ASC | DESC ]
    [ NULLS FIRST | NULLS LAST ]
    [ , column-Name | ColumnPosition | Expression 
    [ ASC | DESC ]
    [ NULLS FIRST | NULLS LAST ]
    ] *

PS:默认为升序ASC

知识点:

  • order by 后面可以接列号(数字)、列名、别名、表达式、函数、分组函数
  • order by 对空值的处理,DESC空值在前,ASC空值在后;
  • order by子句中可以不含select中的列;
  • 当使用select distinctgroup by时,order by 不能使用select之外的列;
  • order by 只能放最后,不能放集合操作的中间;
  • 集合操作后,不接order by按第一列进行升序排序(union all除外);
  • 集合操作后的列名为第一个select的内容,order by 只能选第一个select中的内容进行操作
select job, avg(sal) "Average Salary" 
from emp 
    group by job 
    order by "Average Salary" DESC;

补充:

  Union(union all): 指令的目的是将两个 SQL 语句的结果集合并起来,得到你所需要的查询结果。

  Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

  Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

  order by子句必须写在最后一个结果集里,并且其排序规则将改变操作后的排序结果。对于Union、Union All都有效。

实例:

1)按照名称排序(默认升序)、按照名称升序(ASC),按照名称降序(DESC),如果名称有相同的按照id降序排序(降序相当于显示最新的在前面)

-- 默认升序
SELECT * FROM t_test t ORDER BY t.content;
-- 按名称升序
SELECT * FROM t_test t ORDER BY t.content ASC;

技术图片

-- 按名称降序
SELECT * FROM t_test t ORDER BY t.content DESC

技术图片 

-- 名称相同的按id降序(将最新的排序)。这里我新添加了一条数据test4
SELECT * FROM t_test t ORDER BY t.content DESC,t.id DESC;

技术图片

 

 2)缺省处理:oracle在order by时认为null是最大值, 所以如果是asc升序则排在最后, desc降序则排在最前.我们可以使用nulls first或者nulls last来控制null的位置。

-- 升序显示,默认null值在后面,使用nulls first将null显示在最前面
SELECT * FROM t_test t ORDER BY t.content ASC NULLS FIRST;
-- 降序显示,默认null值在前面,使用null last将null显示在最后面
SELECT * FROM t_test t ORDER BY t.content DESC NULLS FIRST;

mysql的如下:

-- null值显示在最前面
SELECT * FROM t_test t ORDER BY IF(ISNULL(t.content),0,1),t.content ASC;
-- null值显示在最后面
SELECT * FROM t_test t ORDER BY IF(ISNULL(t.content),1,0),t.content DESC;

3)将名称带有"test"的先显示,其余按照名称升序排序

在这里由于少了别名,出现报错,不过已解决

可以参考我的另一篇博客文章:https://www.cnblogs.com/HeiDi-BoKe/p/11763494.html

select * from t_test t1 where t1.content like %test%
Union all
select * from 
(select * from t_test t2 where t2.content not like %test% order by t2.content asc) d;

上面的方法没有把null值显示出来。另一种方法也可实现,并显示null值

select * from t_test t
order by 
case
  when t.content like %test% then 0
  else  1
end,t.content asc;

技术图片

 

 4)按照id为6的排到第一位,其余按照id降序排序

select * from t_test order by decode(id, 6,1), id desc; 

PS:

  DECODE函数的语法:DECODE(value,if1,then1,if2,then2,if3,then3,…,else);
  DECODE函数说明:表示如果value等于if1时,DECODE函数的结果返回then1,…,如果不等于任何一个if值,则返回else。
  sign函数语法:sign(n); 
  sign函数说明:取数字n的符号,大于0返回1,小于0返回-1,等于0返回0(n可以是表达式,(n-200))。 

 

 

参考网址:https://blog.csdn.net/tian_tian2/article/details/80816275

 

【Oracle命令】sql语句之排序(order by)

标签:sdn   处理   image   集合   column   pos   没有   upload   like   

原文地址:https://www.cnblogs.com/HeiDi-BoKe/p/11763776.html

安全管理 电磁兼容 起用 免费网 剧集 蝰蛇 太难 经济区 几次 低热 胶带 认知 挺好 脱泡 自动包装机 心意 使用说明 视频信号 清心 附加 蒂安 滑板车 回升 uefi 腾达 筹备组 序列 突显 头灯 复旦大学 专利权 阳光 进口量 主流 垃圾焚烧 最好用 邮电部 帮派 胶片 全景图 授予 鲁班 兴奋剂 吸附剂 打铃 负责 矿产 劲爆 喷洒 macupload 红外线 奶粉 耐油性 群体 共青团中央 调控 双日 创作 两座 行驶证 理念 好吧 德保 越多 牧师 橙色 电灯泡 潮阳 圆球 孔隙 锡炉 子弹 前十 万家 科学仪器 相图 工头 十大 浸水 标志 搭配 尼古拉斯 中医药 价格 胶囊 拼板 连接器 饰品 兴和县 皇冠 比武 千里走单骑 日月 空泡 后处理 小钢炮 四维 铺轨 含水量 造字
资源来源网络,若未解决请查看原文

本文地址:https://www.heimacode.com/article/60371.html